Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 속성과 속성의 차이점은 무엇입니까?

<시간/>

파이썬에서는 모든 것이 객체입니다. 그리고 모든 객체에는 속성과 메서드 또는 기능이 있습니다. 속성은 이름, 나이, 키 등과 같은 데이터 변수로 설명됩니다.

속성은 __get__, __set__ 및 __delete__ 메서드와 같은 getter, setter 및 delete 메서드가 있는 특별한 종류의 속성입니다.

그러나 Python에는 속성에 대한 getter/setter 액세스를 제공하는 속성 데코레이터가 있습니다. 속성은 특별한 종류의 속성입니다. 기본적으로 파이썬이 다음 코드를 만났을 때:

foo = SomeObject()
print(foo.bar)

foo에서 bar를 찾은 다음 bar를 검사하여 __get__, __set__ 또는 __delete__ 메서드 가 있는지 확인하고 가 있으면 속성입니다. 속성인 경우 bar 객체를 반환하는 대신 __get__ 메서드를 호출하고 해당 메서드가 반환하는 모든 것을 반환합니다.

Python에서는 속성 함수를 사용하여 getter, setter 및 delete 메서드를 정의할 수 있습니다. 읽기 속성만 원하는 경우 메서드 위에 추가할 수 있는 @property 데코레이터도 있습니다.

class C(object):
    def __init__(self):
        self._x = None
#C._x is an attribute
@property
    def x(self):
        """I'm the 'x' property."""
        return self._x
# C._x is a property   This is the getter method
@x.setter # This is the setter method
    def x(self, value):
        self._x = value
@x.deleter # This is the delete method
    def x(self):
        del self._x