🔴 同一个函数,喂子类进去就不对了

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

一个函数只做一件事:把宽改成 10,然后返回面积。调用方拿的是"长方形",预期是 10 乘原来的高。两个对象各喂一次:

class Rect:
    def __init__(self, w, h):
        self._w, self._h = w, h

    def set_w(self, w):
        self._w = w

    def area(self):
        return self._w * self._h


class SquareBad(Rect):
    """把正方形做成长方形的子类"""
    def __init__(self, s):
        super().__init__(s, s)

    def set_w(self, w):
        self._w = w
        self._h = w        # 不同时改,它就不是正方形了

def stretch_to_10(r):
    """调用方拿的是"长方形":把宽改成 10,面积应该是 10 乘原来的高"""
    r.set_w(10)
    return r.area()

print(str(stretch_to_10(Rect(3, 4))) + "/"
      + str(stretch_to_10(SquareBad(5))))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论