Skip to content

39. 프로퍼티(Property)


1. 키워드

  • 프로퍼티(Property)
  • Getter와 Setter


2. 프로퍼티 사용하기

  • 다음과 같이 클래스에서 메서드를 통하여 속성의 값을 가져오거나 저장하는 경우가 있다.
  • 이때 값을 가져오는 메서드를 Getter, 값을 저장하는 메서드를 Setter라고 부른다.


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

james = Person()

james.set_age(20)
print(james.get_age()) # 20


  • 파이썬에서는 @property를 사용하면 Getter, Setter를 간단하게 구현할 수 있다.


@property
@메서드이름.setter
class Person:
    def __init__(self):
        self.__age = 0

    @property
    def age(self): # Getter
        return self.__age

    @age.setter
    def age(self, value): # Setter
        self.__age = value

james = Person()

james.age = 20 # 인스턴스.속성 형식으로 접근하여 값 저장
print(james.age) # 인스턴스.속성 형식으로 값을 가져옴


  • Getter, Setter 메서드의 이름을 잘 보면 둘 다 age이다.
  • 그리고 Getter에는 @property가 붙어있고, Setter에는 @age.setter가 붙어있다.
  • 즉, 값을 가져오는 메서드에는 @property 데코레이터를 붙이고, 값을 저장하는 메서드에는 @메서드이름.setter 데코레이터를 붙이는 방식이다.
  • 특히 @property@age.setter를 붙이면 james.age처럼 메서드를 속성처럼 사용할 수 있다.
  • 값을 저장할 때는 james.age = 20처럼 메서드에 바로 값을 할당하면 되고, 값을 가져올 때도 james.age처럼 메서드에 바로 접근하면 된다.


james.age = 20 # 인스턴스.속성 형식으로 접근하여 값 저장
print(james.age) # 인스턴스.속성 형식으로 값을 가져옴

References