본문으로 바로가기

파이썬과 private attribute

category language 2019. 9. 21. 21:46

파이썬은 private 변수를 선언할 수 없다.

흔히 __b 와 같이 attribute 혹은 메서드를 선언한다면 private하게 쓸 수 있다고 알고 있는 사람들이 많지만,

사실 dir(instance)를 출력해보면 _ClassName__b 와 같은 형태로 네임스페이스에 저장되어 있는 것을 알 수 있다.

즉, private 변수를 선언해주는 것이 아니라 compiler에 의해 mangling될 뿐이다.

이 방법은 실제로 private하지 않은데도 private하게 생각될 여지가 있어 파이썬에서도 권장되지 않는다.

관례적으로는 _b와 같이 쓴다고 한다.

하지만 진정한 의미의 private 변수는 존재하지 않는다.