2023. 9. 15. 12:26ㆍpython
파이썬에서 `@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 메서드를 사용하여 값을 유효성 검사하거나 다른 작업을 수행할 수 있습니다.
'python' 카테고리의 다른 글
Collecting mysqlclient==2.1.1 Using cached mysqlclient-2.1.1.tar.gz (88 kB) ERROR: Command errored out with exit status 1: (0) | 2023.09.18 |
---|---|
python 상속에서 methed 정의만 사용 (0) | 2023.09.15 |
pyqt6에서 폼간 데이터 전송방법 (0) | 2023.07.25 |
python UI tools (0) | 2023.07.25 |
pycryptodome 사용법 예제 (0) | 2023.07.20 |