描述符:实例属性遮盖方法的原因
描述符:非特殊的方法可以被实例属性遮盖
函数和方法只实现了__get__方法,属于非覆盖型描述符。
特殊方法不受这个问题的影响,是因为解释器只在类中寻找特殊方法。 __repr__, __getattr__ 都是如此
测试代码:
class LineItem: def __init__(self, description, weight, price): self.description = description self.weight = weight self.price = price def subtotal(self): return self.weight * self.price l = LineItem('apple', 4,5) print(l.subtotal()) print(l.subtotal) #创建实例属性subtotal l.subtotal = 'test' print(l.subtotal) # print(l.subtotal()) #此时再访问实例的subtotal方法会报错,提示TypeError: 'str' object is not callable

浙公网安备 33010602011771号