Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 데이터 은닉

<시간/>

객체의 속성은 클래스 정의 외부에서 표시되거나 표시되지 않을 수 있습니다. 이중 밑줄 접두사로 속성의 이름을 지정해야 하며 이러한 속성은 외부인에게 직접 표시되지 않습니다.

예시

#!/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