Files
python-examples/doc/10_03_property.md
2025-01-20 02:26:20 +09:00

2.3 KiB

프로퍼티

getter와 setter는 객체 지향 프로그래밍에서 객체의 데이터를 안전하게 관리하고, 코드의 유연성을 높이는 데 중요한 역할을 합니다. 특히, 대규모 프로젝트에서 여러 개발자가 함께 작업할 때 데이터 일관성을 유지하고 예기치 않은 오류를 방지하는 데 큰 도움이 됩니다.

파이썬의 @property 데코레이터는 객체의 속성을 마치 메서드처럼 접근하고 설정할 수 있도록 해주는 강력한 기능입니다. 이를 통해 우리는 객체의 내부 상태를 좀 더 안전하게 관리하고, 코드의 가독성을 높일 수 있습니다.

@property 데코레이터를 사용하여 getter와 setter를 정의합니다.

  • getter 메서드 자동 생성: @property 데코레이터가 붙은 메서드는 자동으로 getter 메서드가 됩니다. 즉, 객체의 속성 값을 가져올 때 마치 변수에 접근하듯이 사용할 수 있습니다.
  • setter 메서드 생성: @변수명.setter 데코레이터를 사용하여 setter 메서드를 정의할 수 있습니다. setter 메서드는 속성 값을 설정할 때 호출됩니다.
  • 속성 값에 대한 유효성 검사: setter 메서드에서 값의 유효성을 검사하여 부적절한 값이 설정되는 것을 방지할 수 있습니다.
class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if not isinstance(value, str):
            raise TypeError("Name must be a string")
        self._name = value

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, value):
        if not isinstance(value, int):
            raise TypeError("Age must be an integer")
        if value < 0:
            raise ValueError("Age cannot be negative")
        self._age = value

위 예시에서 _name과 _age는 private 변수로, 외부에서 직접 접근할 수 없습니다. 대신 name과 age라는 property를 사용하여 값을 읽고 설정합니다. @property 데코레이터는 getter 메서드를, @변수명.setter 데코레이터는 setter 메서드를 정의하는 데 사용됩니다.