描述符:实例属性遮盖方法的原因

描述符:非特殊的方法可以被实例属性遮盖

函数和方法只实现了__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
复制代码

 

posted @   limalove  阅读(3)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示