Python에서 getter, setter 구현하는 방법
Python 에서 getter와 setter 함수를 구현하는 방법은 2가지가 존재한다.
- property() 함수를 이용하는 방법
- @property 속성을 이용하는 방법
하나씩 차례대로 알아보자.
property() 함수 이용
class Person:
def __init__(self):
self._age = 0
def get_age(self):
# getter
return self._age
def set_age(self, value):
# setter
self._age = value
age = property(get_age, set_age)
leffe = Person()
leffe.age = 20 # 내부적으로 setter 호출
print(leffe.age) # 내부적으로 getter 호출
getter 함수와 setter 함수를 클래스 내부에 선언하고, property() 함수를 이용하여 getter, setter를 연결시켜준다. 그 후 클래스 인스턴스를 생성하여 값을 가져오거나 할당하면 내부적으로 getter, setter를 골라 호출하게 된다.
@property 속성 이용
class Person:
def __init__(self):
self._age = 0
@property
def age(self):
# age의 property, getter
return self._age
@age.setter
def age(self, value):
# setter
self._age = value
leffe = Person()
leffe.age = 20 # 내부적으로 setter 호출
print(leffe.age) # 내부적으로 getter 호출
위에서 구현했던 property() 함수와 동일하게 작동하는 코드이다. 둘 중 어느 방법을 사용해도 무방하나, 개인적으로는 아래의 코드가 읽기 편하다고 생각한다. 아마도 age = property(get_age, set_age)라는 문구가 직관적이지 않아서 그런것 같다.
파이썬 공식 Documentation
https://docs.python.org/3/library/functions.html#property
728x90
'SW개발 > Python' 카테고리의 다른 글
[Python]isinstance() 란? (0) | 2021.08.12 |
---|---|
[Python]hasattr(), getattr(), setattr() 함수란? (0) | 2021.07.30 |
[Python]all(), any() 함수란? (0) | 2021.07.26 |
[Python]파이썬의 언더스코어(_)에 대하여 (0) | 2021.05.08 |
[Python]패키지란? (0) | 2021.01.21 |