질문:
property() 함수를 다음과 함께 활용하는 것이 가능합니까? @classmethod로 장식된 함수 decorator?
답변:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!