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

Python 클래스에서 데이터 숨기기는 어떻게 작동합니까?

<시간/>

데이터 숨기기

Python에서는 속성 이름 앞에 이중 밑줄을 사용하여 액세스할 수 없거나 비공개로 만들거나 숨깁니다.

다음 코드는 __hiddenVar 변수를 숨기는 방법을 보여줍니다.

예시

class MyClass:
    __hiddenVar = 0
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject.__hiddenVar)

출력

3
Traceback (most recent call last):
11
  File "C:/Users/TutorialsPoint1/~_1.py", line 12, in <module>
    print (myObject.__hiddenVar)
AttributeError: MyClass instance has no attribute '__hiddenVar'

위의 프로그램에서 우리는 object를 사용하여 클래스 외부의 숨겨진 변수에 접근을 시도했고 예외를 던졌습니다.

다음과 같은 특수 구문을 사용하여 숨겨진 속성 값에 액세스할 수 있습니다. -

예시

class MyClass:
    __hiddenVar = 12
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject._MyClass__hiddenVar)

출력

15
23
23

private 메서드는 클래스 외부에서 액세스할 수 있지만 일반적인 경우만큼 쉽지는 않습니다. 파이썬의 어떤 것도 진정으로 사적인 것이 아닙니다. 내부적으로 private 메소드와 속성의 이름은 주어진 이름으로 액세스할 수 없도록 즉시 변경 및 해제됩니다.