데코레이터로 게터와 세터 구현하기
파이썬에서는 데코레이터(Decorators)
를 사용하여 게터
와 세터
를 더 간결하게 구현할 수 있습니다.
프로그래밍에서 데코레이터는 함함수나 메서드의 기능을 확장하거나 수정하며, 파이썬에서는 @
기호를 사용하여 데코레이터를 적용합니다.
게터와 세터 정의에 사용되는 데코레이터는 다음과 같습니다.
-
@property
: 게터 메서드를 정의합니다. 속성처럼 값을 읽을 수 있도록 설정합니다. -
@속성명.setter
: 세터 메서드를 정의합니다. 속성 값을 설정하거나 수정할 수 있도록 설정합니다.
데코레이터를 사용한 게터와 세터 예시
class Person:
def __init__(self, name):
self.__name = name
@property # 게터 메서드 정의
def name(self):
return self.__name
@name.setter # 세터 메서드 정의
def name(self, value):
if isinstance(value, str):
self.__name = value
else:
raise ValueError("이름은 문자열이어야 합니다.")
person = Person("홍길동")
# 게터 사용
print(person.name) # '홍길동' 출력
# 세터 사용
person.name = "박철수" # 이름 변경
print(person.name) # '박철수' 출력
# 잘못된 값 설정 시도 (오류 발생)
# person.name = 123
# # ValueError: 이름은 문자열이어야 합니다.
위 코드에서 __name
은 Person
클래스의 프라이빗 변수입니다.
@property
데코레이터는 name
메서드를 게터로 정의하며, @name.setter
데코레이터는 name
메서드를 세터로 정의합니다.
이렇게 데코레이터를 사용하면 게터와 세터를 더 간결하게 구현할 수 있습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!