我正在阅读Fluent Python 第 19 章 > A Proper Look at Properties,我对以下单词感到困惑:
属性始终是类属性,但它们实际上管理类实例中的属性访问。
示例代码是:
class LineItem:
def __init__(self, description, weight, price):
self.description = description
self.weight = weight # <1>
self.price = price
def subtotal(self):
return self.weight * self.price
@property # <2>
def weight(self): # <3>
return self.__weight # <4>
@weight.setter # <5>
def weight(self, value):
if value > 0:
self.__weight = value # <6>
else:
raise ValueError('value must be > 0') # <7>
根据我以前的经验,类属性属于类本身,并由所有实例共享。但是这里,weight,属性,是一个实例方法,它返回的值在实例之间是不同的。它如何有资格成为类属性?对于任何实例,所有类属性不是都应该相同吗?
我想我误解了一些东西,所以我希望得到一个正确的解释。谢谢!
青春有我
在类内部调用同一类中的属性必须要$this->属性名或者类名->属性名么?
在父类中定义final属性,子类中有和父类中final属性重名的属性,子类中的属性是隐藏了父类的final属性
到底添加类属性还是实例属性
继承的属性为什么不显示?
相关分类