>백엔드 개발 >파이썬 튜토리얼 >클래스 메서드가 Python에서 속성을 사용할 수 있나요?

클래스 메서드가 Python에서 속성을 사용할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-28 09:01:15283검색

Can Class Methods Use Properties in Python?

클래스 메소드와 함께 속성 사용

질문:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.