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

이중 밑줄 접두사는 Python 변수에서 무엇을합니까?

<시간/>

이중 밑줄 접두사

파이썬에서는 속성 이름 앞에 이중 밑줄, 즉 __를 사용하며 이러한 속성은 외부에서 직접 액세스하거나 볼 수 없습니다. 이중 밑줄은 속성 이름을 맹글링합니다. 그러나 그 변수는 여전히 까다로운 구문을 사용하여 액세스할 수 있지만 일반적으로 그렇게 하는 것은 좋은 생각이 아닙니다. 이중 밑줄은 완전한 개인 변수에 사용됩니다.

Python 문서에 따르면 -

클래스를 하위 클래스로 만들려는 경우 하위 클래스에서 사용하지 않으려는 속성이 있는 경우 두 개의 선행 밑줄로 이름을 지정하고 후행 밑줄은 사용하지 않는 것이 좋습니다. 이것은 클래스의 이름이 속성 이름으로 맹글링되는 파이썬의 이름 맹글링 알고리즘을 호출합니다. 이렇게 하면 서브클래스에 같은 이름의 속성이 실수로 포함되는 경우 속성 이름 충돌을 방지하는 데 도움이 됩니다.

예시

아래 코드는 이중 밑줄 사용을 보여줍니다.

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/.PyCharmCE2017.2/config/scratches/scratch_1.py", line 12, in <module>
    print (myObject.__hiddenVar)
AttributeError: MyClass instance has no attribute '__hiddenVar'

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