一张卡片持有一份尺寸
三个形状:长方形 3×4、正方形边长 5、三角形底 6 高 5。Card **持有**一个 Size,而不是继承它:
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())
c = Card("名片", Size(3, 4))
print(c.label())
全部评论