描述符:实例属性遮盖方法的原因
描述符:非特殊的方法可以被实例属性遮盖
函数和方法只实现了__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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步