2015년 8월 25일 화요일

파이톤 프로퍼티(property)의 이해를 위한 예제

파이톤(python)의 프로퍼티(property)의 유용함에 대해서 예제와 함께 다룹니다.
파이톤에서 property란 "사물의 고유한 특성"을 나타내는 말입니다.

무지개라는 클래스를 상상해 봅니다.
class rainbow:
    colors = ['red','yellow','green','blue']

심플하게 4가지 색상으로 정의를 했습니다. 정말 아름다운 언어입니다.

하지만, 프로그램 개발자 입장에서는 매우 위험하다는 생각을 할 수 있습니다. 속성(성질)에 대한 좀 더 명확한 정의를 property를 통해서 만들어 봅니다.

무지개 색상(colors)에 대한 property 정의
In [1]:
class rainbow:
    def __init__(self):
        self.COLORS = ['red','yellow','green','blue']
        self._colors = self.COLORS
        
    @property
    def colors(self):
        return self._colors
    
    @colors.setter
    def colors(self,IN_colors):
        self._colors = [ c for c in IN_colors if c in self.COLORS ]

r = rainbow()
색상들을 입력함
In [2]:
r.colors = ['black','red','yellow']
무지개 색상에 있는 색만 등록됨
In [3]:
r.colors
Out[3]:
['red', 'yellow']

코드가 늘어 났지만 색상에 대한 속성(property) 정의를 통해서 잘 정의된 클래스로 보입니다. 속성 정의를 통해서 클래스를 명확하게 정의하는 것이 프로그램의 완성도에 많은 기여를 할 것으로 보입니다.

작은 사회에서는 구두 약속 만으로 충분하지만, 사회가 커질수록 (번거럽더라도) 절차를 따르는 것이 필요 하듯이, 프로그램 개발도 비슷해 보입니다. 반대로, 천원 빌려 주면서 차용증을 쓸 필요는 없었으면 합니다.


참고

* https://docs.python.org/3.4/library/functions.html#property

0 개의 댓글:

댓글 쓰기