SW개발/Python

[Python]property로 getter, setter 구현하기

Python에서 getter, setter 구현하는 방법

Python 에서 getter와 setter 함수를 구현하는 방법은 2가지가 존재한다.

  1. property() 함수를 이용하는 방법
  2. @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

 

Built-in Functions — Python 3.9.6 documentation

Built-in Functions The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order. abs(x) Return the absolute value of a number. The argument may be an integer, a floating poin

docs.python.org

 

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