- 파이썬은 클래스 정의 이외에서 볼 수 없도록 하는 속성에 대한 네이밍 컨벤션이 있다.
- 속성 이름앞에 두개의 언더스코어(__)[던더]를 붙이면 된다
class Duck(): def __init__(self, i_name): self.__name = i_name @property def name(self): print('inside the getter') return self.__name @name.setter def name(self, i_name): print('inside the setter') self.__name = i_name
fow1 = Duck('Howard') fow1.name
inside the getter ‘Howard’
fow1.name = 'Donald'
inside the setter
fow1.name
inside the getter ‘Donald’
fow1.__name
AttributeError Traceback (most recent call last) <ipython-input-8-41d57c24dae8> in <module>() ----> 1 fow1.__name AttributeError: 'Duck' object has no attribute '__name'
이 네이밍 컨벤션은 속성을 private로 만들지 않지만, 파이썬은 이 속성이 우연히 외부 코드에서 발견할 수 없도록 이름을 맹글링 했다.
fow1._Duck__name
‘Donald’
Comments