객체 지향 프로그래밍의 핵심 원칙 중 하나는 캡슐화(Encapsulation)입니다. 캡슐화는 객체의 상태와 행동을 함께 묶는 것을 의미하며, 이를 통해 객체의 상태를 외부에서 직접 변경하는 것을 제한하고, 특정 메서드를 통해서만 접근하도록 만들 수 있습니다. 🌐 파이썬에서는 @property 데코레이터를 사용하여 캡슐화를 효과적으로 구현할 수 있습니다.
1. @property 데코레이터란? 🔍
@property는 메서드를 속성처럼 호출할 수 있게 해주는 데코레이터입니다. 이를 통해 메서드를 변수처럼 간단하게 접근할 수 있게 됩니다.
2. 기본 사용법 📝
아래는 @property를 사용한 간단한 예시입니다:
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value < 0:
raise ValueError("반지름은 음수일 수 없습니다!")
self._radius = value
위 코드에서 radius는 외부에서 직접 접근할 수 없는 _radius 속성의 값을 가져오거나 설정하는 메서드로 사용됩니다. 🔄
해당 코드를 보면 Circle이라는 원을 표현하는 클래스가 있습니다. 이 클래스는 반지름 값을 가지고 있는데요, 그 반지름 값을 안전하게 관리하기 위한 방법들이 작성되어 있습니다.
1. self._radius 초기화:
Circle 클래스의 객체를 처음 만들 때, 원하는 반지름 값을 넣어주면 self._radius라는 상자에 그 값을 저장합니다.
my_circle = Circle(5)
위 코드를 실행하면 반지름이 5인 원을 만들 수 있어요.
2. 반지름 값을 가져오기:
@property 데코레이터가 있는 radius 메서드는 현재 저장된 반지름 값을 가져올 때 사용합니다. 이건 창문을 통해 상자 안을 보는 것과 비슷해요.
print(my_circle.radius)
위 코드를 실행하면 현재 저장된 반지름 값인 5가 출력됩니다.
3. 반지름 값을 변경하기:
@radius.setter 데코레이터가 있는 radius 메서드는 반지름 값을 변경하고 싶을 때 사용합니다. 이건 창문을 통해 상자 안의 것을 바꾸는 것과 같아요. 하지만 여기서는 값이 음수로 들어오면 오류를 발생시키도록 설정되어 있습니다.
my_circle.radius = 7 # 반지름 값을 7로 변경합니다.
그런데 만약 다음처럼 음수 값을 넣으면?
my_circle.radius = -3 # 반지름은 음수일 수 없습니다!라는 오류 메세지가 나올 것입니다.
이렇게 @property와 @radius.setter 데코레이터를 사용해서, 반지름 값에 직접 접근하는 대신 안전한 방법으로 값을 가져오거나 바꿀 수 있게 만든 것입니다! 🌟
3. 장점 🌟
- 정보 은닉: 내부 속성을 직접 노출시키지 않고, 특정 메서드를 통해 접근하게 함으로써 객체의 상태를 안전하게 관리할 수 있습니다.
- 유연성: 내부 구현을 변경해도 외부에서의 접근 방법은 동일하게 유지됩니다. 이를 통해 코드의 수정이 간편해집니다.
🎉 파이썬의 @property 데코레이터는 객체 지향 프로그래밍의 캡슐화 원칙을 효과적으로 구현하는 강력한 도구입니다. 이를 활용하여 안정적이고 유지보수하기 좋은 코드를 작성해보세요!
'프로그래밍 언어(Programming Languages) > 파이썬(Python)' 카테고리의 다른 글
[Python] 부모와 자식의 관계: 클래스 상속 탐험하기 🚴♂️ (22) | 2023.11.08 |
---|---|
[Python] isinstance() 함수 활용하기! 📘✨ (30) | 2023.11.07 |
[Python] 파이썬 데코레이터: 코드의 아름다움을 재구성하는 방법 (49) | 2023.10.31 |
[Python] 파이썬 함수의 세계: 각종 함수 유형 마스터하기 - 2탄 (41) | 2023.10.17 |
[Python] 파이썬 함수의 세계: 각종 함수 유형 마스터하기 - 1탄 (52) | 2023.10.16 |