⚠️ 换掉里面那个零件,外面一行没改

👁️ 1 人浏览 💬 0 人评论 ❤️ 添加收藏

换一种尺寸塞进去。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())
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论