Open1
python dataclassに対する多態
from typing import Protocol
from dataclasses import dataclass
class Shape(Protocol):
def area(self) -> float:
pass
@dataclass
class Circle:
radius: float
def area(self) -> float:
return 3.14 * self.radius * self.radius
@dataclass
class Rectangle:
width: float
height: float
def area(self) -> float:
return self.width * self.height
def print_area(shape: Shape) -> None:
print(f"The area is {shape.area()}")
if __name__ == '__main__':
circle = Circle(radius=5)
rectangle = Rectangle(width=10, height=20)
print_area(circle) # -> The area is 78.5
print_area(rectangle) # -> The area is 200