파이썬 클래스 중에서 property라는 것에 대해서 살펴보겠습니다.
property는 데코레이터로 들어갑니다.
property는 실제모양을 보면 attribute와 거의 유사하지만,
차이점은 실제 데이터를 access 할때 그 값을 계산을 합니다.
import math
class Rectangle(object):
def __init__(self,r):
self.r = r
@property
def area(self):
return self.r*self.r
@property
def sqrt(self):
return self.r*math.sqrt(2)
a = Rectangle(4)
print a.area # 16
print a.sqrt # 5.65685424949
a.area = 1 # AttributeError: can't set attribute
여기서 보시면 a.r 은 attribute입니다 읽기, 쓰기가 모두 됩니다.
반면에 a.area랑 a.sqrt는 읽기만 되고, 또, 호출할때 그 값을 계산을 합니다.
그래서 이것을 보완 하기 위해서 setter와 deleter에 access가 가능합니다.
원래는 property를 class에 추가하기 위해서 getter, setter, deleter를 추가하던 방식에서
간단히 decorator를 이용한 방식으로 변경이 된것입니다.