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

2021. 7. 28. 13:37·SW개발/Python

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
'SW개발/Python' 카테고리의 다른 글
  • [Python]isinstance() 란?
  • [Python]hasattr(), getattr(), setattr() 함수란?
  • [Python]all(), any() 함수란?
  • [Python]파이썬의 언더스코어(_)에 대하여
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • SW개발 (303)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (1)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    g
    음식
    배달비 공유
    트리 #AVL #알고리즘 #자료구조
    Contributor
    라이프 스타일
    배공파용
    어플리케이션
    플레이스토어
    배달
    django
    오픈소스
    컨트리뷰터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[Python]property로 getter, setter 구현하기
상단으로

티스토리툴바