BackEnd/Python

python에서 private로 처리 하고 싶다면? @Property

Sh.TK 2018. 1. 31. 20:04

참조: http://hamait.tistory.com/827


Python에서는 Protected와 Private에 대한 개념이 없다.


그래서 __변수명(private), _변수명(protected)와 같은 방식으로 개발자끼리 약속하여 변수명을 지정한다.


그러다보니 변수값 설정할 때, 특정 범위를 넘어가면 에러가 발생하도록 처리할 수 없을 것이다.


이를 구현하기 위한 것이 @Property 이다.


아래와 같은 방식으로 구현하여 특정 변수값에 제한을 둔다.

class Celsius:
def __init__(self):
pass
def to_fahrenheit(self):
return (self._temperature * 1.8) + 32

@property
def temperature(self):
print("Getting value")
return self._temperature

@temperature.setter
def temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is not possible")
print("Setting value")
self._temperature = value