2014년 1월 21일 화요일

Python property

Python 에는 property라는 것이 있습니다.

간단하게 이해하면 Java의  getter/setter등을 대체 할 수 있는 것입니다.

사실 Java에 property 기능이 없어서 getter/setter 와 같은 관용구가 한 예로 사용되는 것이지 좀 더 넓은 의미인데요, python에서는 attribute를 그대로 노출 시키는 것을 권장하는 것 같습니다.

기본적으로 다음과 같이 씁니다. (pybrain code에서 일부 가져왔습니다)
vectorformat = property(getVectorFormat, setVectorFormat, None, "vectorformat can be '1d', '2d' or 'list'")
첫 인자부터 Read, Write, Delete, Doc 로 이해하시면 됩니다.

(아마도)2.6 부터는 decorator로 제공되며 다음과 같이 사용 할 수 있습니다.

@state.setter
def state(self, k):
        if not (0 <= k <= 2):
            raise ValueError("Must be 0 through 2 inclusive!")
        else:
            self._state = k


좀 더 자세한 내용은 다음의 블로그에 잘 나와있습니다.
http://infohost.nmt.edu/tcc/help/pubs/python27/web/property-function.html
http://blog.dahlia.kr/post/2492201571

댓글 없음:

댓글 쓰기