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를 간단하게 구현할 수 있다.
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