단일 밑줄
클래스에서 이름 앞에 밑줄이 있는 것은 기본적으로 다른 프로그래머에게 속성이나 메서드가 비공개로 지정되어 있음을 나타내기 위한 것입니다.
semi-private에는 단일 밑줄을 사용하고 완전 개인 변수에는 이중 밑줄을 사용하는 것이 좋습니다.
PEP-8 인용 -
_single_leading_underscore:약한 "내부 사용" 표시기. 예 from M import *는 이름이 밑줄로 시작하는 개체를 가져오지 않습니다.
예시
다음 코드는 이중 밑줄 접두사와 단일 밑줄 접두사의 차이점을 보여줍니다.
class MyClass(): def __init__(self): self.__fullrprivate = "World" self._semiprivate = "Hello" mc = MyClass() print mc._semiprivate print mc.__fullprivate
출력
Traceback (most recent call last): Hello File "C:/Users/TutorialsPoint1/~_1.py", line 8, in <module> print mc.__fullprivate AttributeError: MyClass instance has no attribute '__fullprivate'