Pythonのポリモーフィズムを勉強しています
ひきつづきPython修行中です。
オライリーの「入門Python3」の「ダックタイピング」のところで
いまひとつ「ポリモーフィズム」の意味が分からずにいましたが
下記のコードを見つけて納得したのでメモ。
class Shape:
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14159 * self.radius**2
class Triangle(Shape):
def __init__(self, base, height):
self.base = base
self.height = height
def area(self):
return self.base * self.height * 0.5
def calculate_area(obj):
print(obj.area())
rectangle = Rectangle(4, 5)
circle = Circle(3)
triangle = Triangle(5,1)
calculate_area(rectangle)
calculate_area(circle)
calculate_area(triangle)