继承
在讲多态之前我们再复习下继承,下面是一个例子。
Circle 和 Rectangle 继承自 Shape,不同的图形,面积(area)计算方式不同。
# shape.py
class Shape:
def area(self):
return 0.0
class Circle(Shape):
def __init__(self, r=0.0):
self.r = r
def area(self):
return math.pi * self.r * self.r
class Rectangle(Shape):
def __init__(self, a, b):
self.a, self.b = a, b
def area(self):
return self.a * self.b
用法比较直接:
>>> from shape import *
>>> circle = Circle(3.0)
>>> circle.area()
28.274333882308138
>>> rectangle = Rectangle(2.0, 3.0)
>>> rectangle.area()
6.0
如果 Circle 没有定义自己的 area:
class Circle(Shape):
pass
那么它将继承父类 Shape 的 area:
>>> Shap