>백엔드 개발 >파이썬 튜토리얼 >Getter, Setter 및 Delter 메서드를 포함하여 Python의 @property 데코레이터는 어떻게 작동합니까?

Getter, Setter 및 Delter 메서드를 포함하여 Python의 @property 데코레이터는 어떻게 작동합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-17 20:51:11469검색

How Does Python's @property Decorator Work, Including Its Getter, Setter, and Deleter Methods?

@property 데코레이터는 Python에서 어떻게 작동하나요?

@property 데코레이터는 속성을 정의할 수 있는 Python의 강력한 도구입니다. 우리 수업을 위해. 그러나 함수로 사용될 때 인수를 취함에도 불구하고 데코레이터로서의 사용법은 혼란스러울 수 있습니다.

속성 객체

데코레이터의 동작을 이해하는 열쇠는 속성() 함수. 이 함수는 getter, setter 및 deleter와 같은 추가 메소드가 있는 특수 설명자 객체를 반환합니다.

데코레이터를 사용하여 속성 만들기

@property 구문은 속성 개체를 수동으로 정의합니다. 아래 코드는 @property 데코레이터 사용법과 동일합니다.

def foo(self): return self._foo
foo = property(foo)

속성에 함수를 할당할 때 해당 함수를 속성 개체로 바꿉니다.

Setter 꾸미기 및 삭제자 메서드

@property.setter() 및 @property.deleter() 데코레이터는 x.setter 및 x.deleter 구문을 사용함에도 불구하고 새 객체를 생성하지 않습니다. 대신 속성 개체의 getter, setter 및 deleter 메서드를 호출합니다.

x.setter = property().setter(another_setter_function)  # Replace setter
x.deleter = property().deleter(another_deleter_function)  # Replace deleter

이러한 메서드는 업데이트된 setter 또는 deleter 메서드를 사용하여 새 속성 개체를 반환합니다.

사용 설명자 메서드

속성 개체는 __get__()을 사용하여 설명자 개체 역할을 합니다. __set__() 및 __delete__() 메서드. 이러한 메소드는 인스턴스 속성 액세스를 처리합니다.

prop.__get__(instance, owner_class): # Access the property
prop.__set__(instance, value): # Set the property
prop.__delete__(instance): # Delete the property

데코레이터 메소드와 디스크립터 메소드를 사용하여 속성을 구축해 보겠습니다.

class PropertyDemonstrator:
    def __init__(self):
        self._private_data = 5

    def get_private(self): return self._private_data

    def set_private(self, value): self._private_data = value

    def delete_private(self): del self._private_data

    # Create a property using decorator methods
    private = property(get_private, set_private, delete_private, "My Private Data")

    # Create a property using descriptor methods
    another_private = Property(get_private, set_private, delete_private, "My Another Private Data")

이 예에서 속성 객체의 설명자 메서드는 _private_data 속성의 실제 조작을 처리하여 다음을 제공합니다. 일관되고 유연한 방식으로 액세스, 수정, 삭제합니다.

위 내용은 Getter, Setter 및 Delter 메서드를 포함하여 Python의 @property 데코레이터는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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