問題:
是否可以將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中文網其他相關文章!