Py学习  »  Python

为什么python中有属性类属性?

Bicheng • 6 年前 • 1975 次点击  

我在读书 fluent python第19章正确查看属性 ,我对以下词语感到困惑:

属性总是类属性,但它们实际上管理类实例中的属性访问。

示例代码是:

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属性是一个实例方法,它返回的值在实例之间是不同的。它如何有资格成为一个类属性?对于任何实例,所有的类属性都应该是相同的,不是吗?

我想我误解了一些事情,所以我希望得到一个正确的解释。谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38693
 
1975 次点击  
文章 [ 5 ]  |  最新文章 6 年前