Develope/Python
[Python] 클래스 속성의 getter & setter 정의
noggame
2023. 9. 11. 14:50
방법 1. 내장 property method
클래스의 속성값에 대한 getter, setter, destructor 동작을 method로 정의하고,
내장함수인 property를 사용해 해당하는 속성과 연결시켜 사용.
샘플코드
# Python program showing a use of property() function
class Geeks:
def __init__(self):
self._age = 0
# function to get value of _age
def get_age(self):
print("getter method called")
return self._age
# function to set value of _age
def set_age(self, a):
print("setter method called")
self._age = a
# function to delete _age attribute
def del_age(self):
del self._age
age = property(get_age, set_age, del_age)
mark = Geeks()
mark.age = 10
print(mark.age)
샘플코드의 출력
setter method called
getter method called
10
방법 2. 내장 decorator
속성의 getter, setter method 정의 시 내장 decorator인 @property를 사용
(*decorator는 보편적으로 사용되는 동작을 정의하고, 특정 function 호출시 해당 동작이 함께 수행될 수 있도록 정의하고 있는 function 동작에 대한 function 정의라고 볼 수 있다. (상세한 설명은 참조의 링크 확인))
샘플코드
# Python program showing the use of @property
class Geeks:
def __init__(self):
self._age = 0
# using property decorator
# a getter function
@property
def age(self):
print("getter method called")
return self._age
# a setter function
@age.setter
def age(self, a):
if(a < 18):
raise ValueError("Sorry you age is below eligibility criteria")
print("setter method called")
self._age = a
mark = Geeks()
mark.age = 19
print(mark.age)
샘플코드의 출력
setter method called
getter method called
19