⚠️ 继承链一深,就说不清行为从哪来
四层继承,中间两层什么都没写。看看 who 从哪儿来、这条链一共几层(不算 object): class A: def who(self): return "A" cla
阅读更多 →
一个上帝类,几个方法几种理由
数一数这个类有几个方法、这些方法归几种改动理由: GOD = ["area", "perimeter", "to_text", "
阅读更多 →
⚠️ 「为了复用而继承」错在哪
只是想复用父类的几个方法就去继承它。这么做的问题是【0】。
阅读更多 →
「上帝类」是什么样子
被叫做上帝类的那种类,特征是【0】。
阅读更多 →
⚠️ 同一个类,塞两种存储
用同一个 Reporter 报两次,存储换成两种不同的实现。
阅读更多 →
🔴 胖接口逼你实现三个用不上的方法
一个只需要"存"的类,如果被要求实现胖接口,就得写四个方法。只实现真正需要的那一个,再数一数它实现了几个。
阅读更多 →
⚠️ 依赖倒过来之后,测试变简单了
写一个只记次数的假存储,用它测 Reporter:调三次 report,看它存了几次。
阅读更多 →
自己写:让依赖从外面传进来
把 Reporter 补完——存储由外面给,不在里面 new。
阅读更多 →
⚠️ 自己 new 一个,就换不掉了
这一版把存储写死在构造函数里: class MemStore: def __init__(self): self.box = [] def save(self, te
阅读更多 →
换一个存储,Reporter 一行没改
三个形状:长方形 3×4、正方形边长 5、三角形底 6 高 5。Reporter 收的是"能 save 的东西",塞两种不同的存储各跑一次: class MemStore:
阅读更多 →