# 멤버 변수와 같은 이름의 getter, setter 함수를 정의해서
# 외부에서는 멤버를 직접 액세스하는 것처럼 보이지만
# 사실상 동일 이름의 함수를 호출해서 액세스 가능한 인터페이스를 제공하는 것
# 메소드로 별도 구현할 수 있으나 코드가 복잡해질 우려가 있음
class Prop():
@property
def value(self):
return self._value
@value.setter
def value(self, value):
self._value = value
@value.deleter
def value(self):
del self._value
p1 = Prop()
p1.value = 1
print(p1.value)
# 결과
1
# property를 사용하는 두 번째 방법
# legacy 코드가 있을때 크게 바꾸지 않고 구현하는 방법이지만
# OOP 개념에는 맞지 않음 - 멤버에 접근하는 방법이 두 가지
class Prop2():
def __init__(self):
self._val = None
def get_val(self):
return self._val
def set_val(self, val):
self._val = val
value = property(get_val, set_val)
p2 = Prop2()
p2.value = 1
print(p2.get_val())
p2.set_val(2)
print(p2.value)
# 결과
1
2
댓글 영역