간단하게 이해하면 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.setterdef 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