오늘은 파이썬의 접근제한자에 대해 다뤄보겠다. 파이썬을 사용하며 익숙해질때쯔음.. 무언가 이상한 점을 느꼈다. 왜 파이썬에서는 public, protected, private이라는 키워드를 본적이 없지? 궁금해진 필자는 쏜살같이 구글링을 하며 찾은 내용들을 여기다가 정리한다.
일단 결론부터 얘기하면 파이썬에 접근제한자에 대한 키워드는 없다. 그럼 어떡함? 이라는 의문이 들것이다.
정답은 명명규칙에 있었다.
멤버(함수, 변수)명 앞에 _를 한 번 쓰면 protected
멤버(함수, 변수)명 앞에 _를 두 번 쓰면 private
주의할 점은 멤버명 뒤에 _를 두 번 쓰면 다시 public이 된다.
public | member, member__, _member__, __member__ |
protected | _member, _member_ |
private | __member, __member_ |
class Aa:
__prv = 1
__pub__ = 2
_pro = 3
pub = 4
@property
def prv(self):
return self.__prv
@prv.setter
def prv(self, value):
self.__prv = value
@property
def pro(self):
return self._pro
@pro.setter
def pro(self, value):
self._pro = value
a = Aa()
print(a.prv)
print(a.__pub__)
print(a.pro)
print(a.pub)
a.prv = 20
a.pro = 30
print(a.prv)
print(a.pro)
1
2
3
4
20
30
@property, @멤버명.setter 데코레이터는 각각 getter, setter를 편리하게 구현할 수 있다. 보다시피 뒤에 언더바(_)를 두 번 쓴 __pub__ 멤버는 public으로 처리되어 접근이 가능하다.
'[Language] - Python' 카테고리의 다른 글
#5. 덕 타이핑 (Duck Typing) (2) | 2020.12.29 |
---|---|
#4. 추상 클래스 (Abstract Class) (0) | 2020.12.28 |
#3. pickle 모듈 (0) | 2020.12.18 |
#1. staticmethod, classmethod, instancemethod (0) | 2020.12.09 |
#0. args, kwargs (0) | 2020.12.09 |
댓글