본문 바로가기
카테고리 없음

프로퍼티를 활용한 파이썬 강의: 객체 속성의 접근을 더욱 효율적으로 다루자

by 뷰티풀스택 2023. 7. 14.
반응형

@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)

반응형

댓글