くじらの覚えがき2

おもに勉強ノート、現在ハマっていることなど、不定期で更新しています。書きかけの情報や間違った内容などが掲載されることもありますが、何卒ご容赦ください。

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)