整个模型跑一遍

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

三个形状:长方形 3×4、正方形边长 5、三角形底 6 高 5。三个形状走完整条链路:

class Shape:
    def area(self):
        raise NotImplementedError


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

    def area(self):
        return self.w * self.h


class Square(Shape):
    def __init__(self, s):
        self.s = s

    def area(self):
        return self.s ** 2


class Tri(Shape):
    def __init__(self, b, h):
        self.b, self.h = b, h

    def area(self):
        return self.b * self.h // 2


class Formatter:
    def render(self, shape):
        return "面积=" + str(shape.area())


class Store:
    def __init__(self):
        self.box = []

    def save(self, text):
        self.box.append(text)


class Reporter:
    def __init__(self, fmt, store):
        self.fmt, self.store = fmt, store

    def report(self, shape):
        self.store.save(self.fmt.render(shape))


ALL = [Rect(3, 4), Square(5), Tri(6, 5)]

st = Store()
r = Reporter(Formatter(), st)
for s in ALL:
    r.report(s)
print("/".join(st.box))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论