Python @property 사용하기

홍찬기
2 min readAug 7, 2019

--

접근제어자(Access Modifier)

접근 제어자에는 public , private , protected , default 가 있다.
파이썬은 다른언어와 달리 접근 제어자가 없고 작명법으로 접근을 제어할 수 있다. 파이썬에서의 작명법은 아래와 같다.

  • public → 접두사에 아무 밑줄이 없다.
  • private → 접두사에 두개의 밑줄(__)을 적용
  • protected → 접두사에 한개의 밑줄(_) 을 적용
class Example :    def __init__(self):
pass
def public(self):
print('public')
def _protected(self):
print('protected')
def __private(self):
print('private')

Get, Set

다른 언어에서 private 를 사용한 속성값이 있을때 그것을 가져오기 위해서는 get , set 메소드를 쓴다. 파이썬에서는 다음과 같이 사용할 수 있다.

class Person :    def __init__(self):
self.__name = 'hong'
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name

위와 같이 get , set 메소드를 만들면 함수가 너무 많아지고 복잡해진다.

@property

파이썬에서는 @property 데코레이터를 이용하여 위의 get , set 메소드보다 더욱 직관적으로 표현이 가능하다.

class Person :    def __init__(self):
self.__name = 'hong'
@property
def name(self):
return self.__name
@name.setter
def name(self, name):
self.__name = name
person = Person()
print(person.name) # hong
person.name = 'park'
print(person.name) # park

get의 역할은 property , set의 역할은 setter가 한다. property 가 setter 보다 윗줄에 사용되어야 한다.

--

--