⚠️ 换掉里面那个零件,外面一行没改
换一种尺寸塞进去。Card 一个字都没动。
class Size:
"""一份尺寸,自己管自己的校验"""
def __init__(self, w, h):
if w <= 0 or h <= 0:
raise ValueError("边长必须为正")
self.w, self.h = w, h
def area(self):
return self.w * self.h
class Card:
"""一张卡片 **has-a** 一份尺寸(不是 is-a)"""
def __init__(self, title, size):
self.title = title
self.size = size # ← 持有,不是继承
def label(self):
return self.title + ":" + str(self.size.area())
class TriSize:
"""换一种尺寸:三角形。接口和 Size 一样,都有 area()"""
def __init__(self, b, h):
self.b, self.h = b, h
def area(self):
return self.b * self.h // 2
c1 = Card("名片", Size(3, 4))
c2 = Card("旗子", TriSize(6, 5))
print(c1.label() + "/" + c2.label())
全部评论