Python 강좌 : 제 38강 - 속성(Property)
속성(Property)
속성(Property)
은 클래스에서 멤버의 값을 읽거나 쓸 수 있도록 제공하는 방식입니다.
클래스의 멤버를 직접 호출해 읽거나 변경할 수 있지만, 속성(Property)
를 사용하면, 안정성과 유연성을 향상시킬 수 있습니다.
멤버를 은닉시켜 속성의 직접 접근을 막는다면, 안정성을 향상시킵니다.
멤버를 직접변경하는 방식이 아닌, 속성(Property)
를 통해 변경하면 추가적인 작업을 진행할 수 있어 유연성을 향상시킵니다.
Private & Property
- 결과
- 0.76923
Private
Python에도 한정자를 구현할 수 있습니다.
변수명 앞에 이중 밑줄(Double Underscore)
로 구현할 수 있습니다.
한정자란 접근 한정자
라고도 부르며, 접근 수준을 제한하는 역할을 합니다.
대표적으로 public
형식과, private
형식이 있습니다.
public
은 부모 클래스, 자식 클래스에서 모두 접근 가능한 방식입니다.
private
은 부모 클래스에서만 접근이 가능하며, 자식 클래스에서는 접근이 불가능합니다.
간단히 말해, public
은 어디에서나 접근이 가능하며, private
는 내부 클래스에서만 접근이 가능합니다.
만약, print(instance.__value)
으로, 외부에서 __value
에 접근할 경우, 오류가 발생합니다.
이를 통해, 클래스의 속성값이 허용 가능한 범위에서만 변경이 가능하도록 제어할 수 있습니다.
- Tip :
단일 밑줄(Single Undersocre)
로 정의된 클래스나, 변수는from <module> import *
형태로import
할 때 불러와지지 않습니다.
Property
속성(Property)
은 메서드명 위에 @property
를 통해 속성으로 할당할 수 있습니다.
속성으로 할당된 메서드는 하나의 인수(self)만 사용할 수 있습니다.
메서드처럼 구현되었지만, 속성을 호출하는 방식처럼 instance.value
로 사용합니다.
@property
, value
는 기본적으로 속성 값을 반환하는 getter
가 됩니다.
-
Tip :
@
는데코레이터(Decorator)
를 의미합니다. -
Tip :
instance.value()
로 사용할 경우, 오류를 발생시킵니다.
Getter & Setter & Deleter
- 결과
- SET
GET
100
DEL
Getter
Getter
는 속성의 값을 호출할 때 발생합니다.
value.getter
를 사용하지 않는다면, @property
가 Getter
가 됩니다.
속성을 호출햇을 때에도 추가적인 프로세스를 가질 수 있습니다.
Setter
Setter
는 속성의 값을 할당할 때 발생합니다.
value.setter
를 사용하지 않는다면, 값을 변경할 수 없습니다.
Setter
로 할당된 메서드는 두 개의 인수(self, value)만 사용할 수 있습니다.
Deleter
Deleter
는 속성의 값을 제거할 때 발생합니다.
value.deleter
를 사용하지 않는다면, 값을 제거할 수 없습니다.
댓글 남기기