객체 속성을 관리하는 게터(Getter)와 세터(Setter)
클래스에서 게터(getter)
와 세터(setter)
객체의 속성에 간접적으로 접근하거나 값을 설정할 때 사용하는 메서드입니다.
게터
는 속성값을 읽을 때 사용하고, 세터
는 속성값을 설정하거나 수정할 때 사용됩니다.
파이썬에서는 게터와 세터를 직접 구현하거나, @property
데코레이터를 사용해 게터와 세터를 구현할 수 있습니다.
데코레이터 없이 구현하기
일반적으로 파이썬에서 게터와 세터를 직접 구현할 때는 다음과 같은 규칙을 따릅니다.
-
클래스의 속성을 반환하는
게터(getter)
는get_속성명
형식으로 이름을 지정합니다. -
클래스의 속성을 설정하거나 수정하는
세터(setter)
는set_속성명
형식으로 이름을 지정합니다.
게터와 세터 사용 예시
class Person:
def __init__(self, name):
# 프라이빗 변수
self.__name = name
def get_name(self):
return self.__name
def set_name(self, value):
# value 값이 문자열인지 확인
if isinstance(value, str):
self.__name = value
else:
raise ValueError("이름은 문자열이어야 합니다.")
person = Person("홍길동")
print(person.get_name())
# '홍길동' 출력
person.set_name("박철수")
# '박철수'로 이름 변경
print(person.get_name())
# '박철수' 출력
# 잘못된 값 설정 시도 (오류 발생)
# person.set_name(123)
위 코드에서 Person
클래스의 get_name
메서드는 __name
속성을 반환하고, set_name
메서드는 __name
속성을 설정합니다.
set_name
메서드에서는 value
값이 문자열인지 확인하고, 문자열이 아닌 경우 ValueError
를 발생시킵니다.
이와 같이 게터와 세터를 직접 구현하면 속성에 대한 접근을 제어할 수 있으며, 속성값을 안전하게 설정할 수 있습니다.
다음 수업에서는 @property
데코레이터를 사용해 게터와 세터를 구현하는 방법을 알아보겠습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!