2014-01-05 3 views
0

나는이 파이썬 문서 페이지를 찾고 : 오른쪽 아래파이썬 연산자가 속성 데코레이터로 오버로드 되었습니까?

http://docs.python.org/2/library/functions.html#property

class C(object): 
    def __init__(self): 
     self._x = None 

    def getx(self): 
     return self._x 
    def setx(self, value): 
     self._x = value 
    def delx(self): 
     del self._x 
    x = property(getx, setx, delx, "I'm the 'x' property.") 

은 말한다 :

나에게
If then c is an instance of C, c.x will invoke the getter, c.x = value will invoke the setter and del c.x the deleter. 

, CX는 = 값이 함수 값의 할당과 같은 왜냐하면 "="연산자가 오버로드되지 않는 한 cx가 함수이기 때문입니다. 여기서 일어나는 일이 무엇입니까?

del c.x와 동일한 항목

감사합니다.

+0

'c.x'는 기능이 아닙니다, 그것은 속성 객체입니다. – BrenBarn

답변

3

property은 파이썬이 속성 액세스를 처리하는 방식을 변경하는 설명 자입니다. 좋은 소개를 위해 여기에서 읽으십시오 : http://docs.python.org/2/howto/descriptor.html

+1

짧은 대답은 '예'이며'='와'del'은 오버로드되고 있습니다. 관련 메소드는'__get __()','__set __()','__delete __()'입니다. 이들이 정의되면 할당, 액세스 및 삭제시 객체의 동작이 오버로드됩니다. 데이비드의 링크는 모든 세부 사항을 가지고있다. –