7
子类化:是否可以用常规属性覆盖属性?
该赏金过期3天。这个问题的答案有资格获得+500声望奖励。 保罗·潘泽(Paul Panzer)希望奖励现有的答案。 假设我们要创建一类类,这些类是总体概念的不同实现或专业化。假设某些衍生属性有一个合理的默认实现。我们想把它放在基类中 class Math_Set_Base: @property def size(self): return len(self.elements) 因此,在这个相当愚蠢的示例中,子类将能够自动计算其元素 class Concrete_Math_Set(Math_Set_Base): def __init__(self,*elements): self.elements = elements Concrete_Math_Set(1,2,3).size # 3 但是,如果子类不想使用此默认值怎么办?这不起作用: import math class Square_Integers_Below(Math_Set_Base): def __init__(self,cap): self.size = int(math.sqrt(cap)) Square_Integers_Below(7) # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # File "<stdin>", line …