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

40 lines
2.3 KiB
Markdown

# 프로퍼티
getter와 setter는 객체 지향 프로그래밍에서 객체의 데이터를 안전하게 관리하고, 코드의 유연성을 높이는 데 중요한 역할을 합니다. 특히, 대규모 프로젝트에서 여러 개발자가 함께 작업할 때 데이터 일관성을 유지하고 예기치 않은 오류를 방지하는 데 큰 도움이 됩니다.
파이썬의 `@property` 데코레이터는 객체의 속성을 마치 메서드처럼 접근하고 설정할 수 있도록 해주는 강력한 기능입니다. 이를 통해 우리는 객체의 내부 상태를 좀 더 안전하게 관리하고, 코드의 가독성을 높일 수 있습니다.
`@property` 데코레이터를 사용하여 getter와 setter를 정의합니다.
* getter 메서드 자동 생성: `@property` 데코레이터가 붙은 메서드는 자동으로 getter 메서드가 됩니다. 즉, 객체의 속성 값을 가져올 때 마치 변수에 접근하듯이 사용할 수 있습니다.
* setter 메서드 생성: `@변수명.setter` 데코레이터를 사용하여 setter 메서드를 정의할 수 있습니다. setter 메서드는 속성 값을 설정할 때 호출됩니다.
* 속성 값에 대한 유효성 검사: setter 메서드에서 값의 유효성을 검사하여 부적절한 값이 설정되는 것을 방지할 수 있습니다.
```python
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 메서드를 정의하는 데 사용됩니다.