问题:
是否可以将 property() 函数与用@classmethod修饰的函数装饰器?
答案:
Python 3.8 及更早版本:
对于 Python 3.8 及更早版本,建议的解决方案是在元类而不是类上创建属性,因为属性对实例而不是类进行操作。下面是一个示例:
class Foo(object): _var = 5 class __metaclass__(type): # Python 2 syntax for metaclasses def var(cls): return cls._var def var(cls, value): cls._var = value # Python 3 syntax for metaclasses class Meta(type): ... class Foo(metaclass=Meta): ...
Python 3.9 及更高版本:
从 Python 3.9 开始,可以组合使用 @classmethod 和 @property 装饰器。这是一个示例:
class Foo(object): _var = 5 @classmethod @property def var(cls): return cls._var @var.setter def var(cls, value): cls._var = value
在此示例中,属性方法是在类本身上创建的。
以上是Python 中的类方法可以使用属性吗?的详细内容。更多信息请关注PHP中文网其他相关文章!