Daily Develope

[Python] 클래스 속성의 getter & setter 정의 본문

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

참조

Comments