-
Notifications
You must be signed in to change notification settings - Fork 6
/
08-polymorphism_before.py
48 lines (32 loc) · 1.35 KB
/
08-polymorphism_before.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from __future__ import annotations
from dataclasses import dataclass
from enum import Enum, auto
class ConversionType(Enum):
"""Types of unit conversion."""
INCHES_TO_CM = auto()
MILES_TO_KM = auto()
POUNDS_TO_KG = auto()
@dataclass
class Converter:
type: ConversionType
def convert(self, input_value: float):
"""Converts the input value into an output depending on specified conversion type."""
if self.type == ConversionType.INCHES_TO_CM:
output_value = input_value * 2.54
print(f"{input_value} inches becomes {output_value:.4f} centimeters.")
elif self.type == ConversionType.MILES_TO_KM:
output_value = input_value * 1.609
print(f"{input_value} miles becomes {output_value:.4f} kilometers.")
elif self.type == ConversionType.POUNDS_TO_KG:
output_value = input_value / 2.205
print(f"{input_value} pounds becomes {output_value:.4f} kilograms.")
def main() -> None:
input_value = 1
inches_to_cm_conv = Converter(type=ConversionType.INCHES_TO_CM)
inches_to_cm_conv.convert(input_value)
miles_to_km = Converter(type=ConversionType.MILES_TO_KM)
miles_to_km.convert(input_value)
pounds_to_kg = Converter(type=ConversionType.POUNDS_TO_KG)
pounds_to_kg.convert(input_value)
if __name__ == "__main__":
main()