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

객체 속성을 관리하는 게터(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 강의를 등록해 주세요!