Python @classmethod 为什么不能调用 @property 装饰的属性 ?

Python @classmethod 为什么不能调用 @property 装饰的属性 ?

AttributeError: 'property' object has no attribute 依然不是没清楚

阅读 2.8k
1 个回答

看看这个帖子:Python:如何添加 @classmethod @property.setter ,弄清楚它们两个的概念和区别你就了解了。看下写着两个例子:

class MyClass:
    def __init__(self, value):
        self._value = value

    @property
    def value(self):
        return self._value

    @classmethod
    def show_value(cls):
        print(cls.value)  # 这里会报错

obj = MyClass(10)
obj.show_value()

不报错:

class MyClass:
    def __init__(self, value):
        self._value = value

    @property
    def value(self):
        return self._value

    @classmethod
    def show_value(cls, value):
        obj = cls(value)
        print(obj.value)

MyClass.show_value(10)

了解它们的概念和用处:python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题