파이톤에서 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]:
코드가 늘어 났지만 색상에 대한 속성(property) 정의를 통해서 잘 정의된 클래스로 보입니다. 속성 정의를 통해서 클래스를 명확하게 정의하는 것이 프로그램의 완성도에 많은 기여를 할 것으로 보입니다.
작은 사회에서는 구두 약속 만으로 충분하지만, 사회가 커질수록 (번거럽더라도) 절차를 따르는 것이 필요 하듯이, 프로그램 개발도 비슷해 보입니다. 반대로, 천원 빌려 주면서 차용증을 쓸 필요는 없었으면 합니다.
참고
* https://docs.python.org/3.4/library/functions.html#property
0 개의 댓글:
댓글 쓰기