Python 的属性装饰器没有按预期工作

标签 python class properties decorator new-style-class

class Silly:
    @property
    def silly(self):
        "This is a silly property"
        print("You are getting silly")
        return self._silly

    @silly.setter
    def silly(self, value):
        print("You are making silly {}".format(value))
        self._silly = value

    @silly.deleter
    def silly(self):
        print("Whoah, you killed silly!")
        del self._silly

s = Silly()
s.silly = "funny"
value = s.silly
del s.silly

但它不会像预期的那样打印“你越来越傻”、“你让傻很有趣”……。不知道为什么。伙计们,你能让我弄清楚吗?

提前致谢!

最佳答案

The property decorator仅适用于 new-style classes (see also)。使 Silly 显式地从 object 扩展,使其成为一个新样式的类。 (在Python 3中,所有类都是新式类)

class Silly(object):
    @property
    def silly(self):
        # ...
    # ...

关于Python 的属性装饰器没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962037/

相关文章:

Python:同名的常规方法和静态方法

python - 数据帧 : add column with the size of a group

python - 如何将数据帧一列的所有元素设置为数组?

python - 如何使用 Django ORM 获得额外的计数字段?

php - 为什么在使用命名空间时必须包含 PHP 文件?

java - 类描述中要写什么

kotlin - 在 Kotlin 中,只有 getter 的私有(private)属性和私有(private)函数有什么区别吗?

javascript - 单击时“提醒”对象属性

javascript - 使用可变对象属性 JS

python - 如何创建赋予提到的用户角色的机器人命令 |不和谐.py