파이썬에서 @setter 사용법

2023. 9. 15. 12:26python

파이썬에서 `@property` 데코레이터와 함께 `@setter`를 사용하여 속성의 setter 메서드를 정의할 수 있습니다. 이를 통해 클래스의 속성에 값을 설정할 때 사용자 정의 로직을 적용할 수 있습니다.

아래는 `@property`와 `@setter`를 사용하는 간단한 예제입니다:

```python
class MyClass:
    def __init__(self, value):
        self._value = value  # 속성 이름 앞에 밑줄(_)을 붙여서 속성을 보호합니다.

    @property
    def value(self):
        print("Getting value")
        return self._value

    @value.setter
    def value(self, new_value):
        print("Setting value")
        if new_value < 0:
            raise ValueError("Value must be non-negative")
        self._value = new_value

# MyClass 인스턴스 생성
obj = MyClass(42)

# 값을 가져옵니다. (getter 호출)
print(obj.value)

# 값을 설정합니다. (setter 호출)
obj.value = 100

# 예외 발생 시키기
try:
    obj.value = -10  # 유효하지 않은 값을 설정하려고 하면 예외가 발생합니다.
except ValueError as e:
    print(e)
```

위의 예제에서 `@property` 데코레이터를 사용하여 `value` 속성의 getter 메서드를 정의하고, `@value.setter` 데코레이터를 사용하여 setter 메서드를 정의합니다. 이렇게 하면 `obj.value`를 사용하여 값을 가져오거나 설정할 때, 각각 `value` 속성의 getter와 setter 메서드가 호출됩니다. 이를 통해 값을 가져오거나 설정할 때 사용자 정의 로직을 적용할 수 있습니다.

위의 예제에서는 setter 메서드에서 값을 음수로 설정하려고 하면 예외가 발생하도록 했습니다. 이러한 방식으로 setter 메서드를 사용하여 값을 유효성 검사하거나 다른 작업을 수행할 수 있습니다.