@property 데코레이터

Python에서 @property 데코레이터는 메서드를 클래스의 속성처럼 접근할 수 있게 해줍니다. 이를 사용하면, 메서드를 호출하는 것처럼 보이지 않고 속성에 접근하는 것처럼 코드를 작성할 수 있습니다. 이러한 방식은 파이썬스러운(pythonic) 방식으로 디자인할 수 있도록 한다고 합니다.

예제

예를 들어, 다음과 같은 클래스를 정의합니다.

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @property
    def diameter(self):
        return self._radius * 2

    def area(self):
        return 3.14 * self._radius ** 2

이 클래스에는 radius, diameter, 그리고 area라는 세 가지 메서드가 있습니다. radiusdiameter에는 @property 데코레이터가 붙어있고, area에는 붙어있지 않습니다.

이제 이 클래스의 인스턴스를 생성하고, 메서드와 속성에 접근하면 아래와 같습니다.

c = Circle(5)

# @property가 붙은 메서드는 속성처럼 접근합니다.
print(c.radius)    # 5 출력
print(c.diameter)  # 10 출력

# @property가 붙지 않은 메서드는 함수처럼 호출해야 합니다.
print(c.area())    # 78.5 출력

@property 데코레이터가 붙은 메서드는 소괄호를 사용하지 않고 접근할 수 있습니다. 반면에, @property가 없는 메서드는 함수처럼 호출해야 합니다(소괄호를 사용해야 합니다).

@property를 사용하는 경우는 주로, 인스턴스의 상태를 나타내는 값을 계산해서 제공할 때 사용됩니다. 이렇게 하면 클라이언트 코드가 해당 객체의 내부 구현에 대해 알 필요 없이, 일관된 방식으로 속성에 접근할 수 있습니다.

'Python > Python' 카테고리의 다른 글

Python) 위치 인자, 키워드 인자  (0) 2023.07.25
@classmethod 와 @staticmethod  (0) 2023.07.20
glob.glob() 함수  (0) 2023.06.11
Python 라이브러리 - functools  (0) 2023.05.24
Python 라이브러리 - itertools  (0) 2023.05.20