@property는 Python에서 객체 지향 프로그래밍을 할 때 사용되는 데코레이터입니다. 이 데코레이터를 사용하여 클래스 내의 메서드를 속성으로 정의할 수 있습니다. @property를 사용하면 해당 메서드를 호출할 때 속성처럼 사용할 수 있으며, 내부적으로는 getter 함수로 동작합니다.
@property를 사용하는 가장 일반적인 상황은 getter와 setter를 정의할 때입니다. 예를 들어, 클래스 내의 특정 속성 값을 설정하거나 가져와야 하는 경우가 있을 수 있습니다. 이때 @property를 사용하면 편리하게 속성을 가져오거나 설정할 수 있습니다.
아래는 @property를 사용하여 getter와 setter를 정의하는 예제 코드입니다.
```python
class Circle:
def __init__(self, radius):
self.radius = radius
@property
def diameter(self):
return self.radius * 2
@diameter.setter
def diameter(self, diameter):
self.radius = diameter / 2
# 사용 예시
circle = Circle(5)
print(circle.diameter) # 출력: 10
circle.diameter = 8
print(circle.radius) # 출력: 4
```
위의 예제 코드에서 Circle 클래스는 반지름(radius)을 인스턴스 변수로 가지고 있습니다. @property를 사용하여 diameter 메서드를 속성처럼 정의하였습니다. diameter 속성은 원의 지름을 반환하는 getter 메서드입니다.
@diameter.setter 데코레이터를 사용하여 diameter 속성에 값을 설정하는 setter 메서드를 정의하였습니다. setter 메서드를 호출할 때는 대입 연산자를 사용하여 값을 설정할 수 있습니다.
위의 예제 코드를 실행하면, Circle 인스턴스를 생성한 후 diameter 속성을 읽거나 수정할 수 있습니다. diameter 값을 읽을 때는 getter 메서드가 호출되고, 값을 수정할 때는 setter 메서드가 호출됩니다.
더 자세한 내용을 알고 싶다면 아래의 Python 공식 문서를 참고하시기 바랍니다.
[Python 공식 문서 - @property](https://docs.python.org/ko/3/library/functions.html#property)
댓글