社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Bicheng • 6 年前 • 1978 次点击  

我在读书 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
 
1978 次点击  
文章 [ 5 ]  |  最新文章 6 年前