객체의 속성은 클래스 정의 외부에서 표시되거나 표시되지 않을 수 있습니다. 이중 밑줄 접두사로 속성의 이름을 지정해야 하며 이러한 속성은 외부인에게 직접 표시되지 않습니다.
예시
#!/usr/bin/python class JustCounter: __secretCount = 0 def count(self): self.__secretCount += 1 print self.__secretCount counter = JustCounter() counter.count() counter.count() print counter.__secretCount
출력
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다 -
1 2 Traceback (most recent call last): File "test.py", line 12, in <module> print counter.__secretCount AttributeError: JustCounter instance has no attribute '__secretCount'
Python은 클래스 이름을 포함하도록 이름을 내부적으로 변경하여 해당 구성원을 보호합니다. object._className__attrName과 같은 속성에 액세스할 수 있습니다. 마지막 줄을 다음과 같이 바꾸면 효과가 있습니다 -
......................... print counter._JustCounter__secretCount
위의 코드가 실행되면 다음과 같은 결과가 생성됩니다 -
1 2 2