본문으로 건너뛰기
실습하기

데코레이터로 게터와 세터 구현하기

파이썬에서는 데코레이터(Decorators)를 사용하여 게터세터를 더 간결하게 구현할 수 있습니다.

프로그래밍에서 데코레이터는 함함수나 메서드의 기능을 확장하거나 수정하며, 파이썬에서는 @ 기호를 사용하여 데코레이터를 적용합니다.

게터와 세터 정의에 사용되는 데코레이터는 다음과 같습니다.

  1. @property: 게터 메서드를 정의합니다. 속성처럼 값을 읽을 수 있도록 설정합니다.

  2. @속성명.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: 이름은 문자열이어야 합니다.

위 코드에서 __namePerson 클래스의 프라이빗 변수입니다.

@property 데코레이터는 name 메서드를 게터로 정의하며, @name.setter 데코레이터는 name 메서드를 세터로 정의합니다.

이렇게 데코레이터를 사용하면 게터와 세터를 더 간결하게 구현할 수 있습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!