描述符:非特殊的方法可以被例項屬性遮蓋
函式和方法只實現了__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