실제 용어로(실질적으로),python 은 Python 에서 private member 변수라는 것을 가지고 있지 않습니다. 그러나,두개를 추가하는 밑줄(__)에서 시작하게 변하기 쉬운 방법은 개인은 이 협약에 의해 사용 가장 python 코드입니다.
을 이해하고 이 개념을 통해 예
privateVar1.py
라이브 데모
class myClass: __privateVar = 27; def __privMeth(self): print("I'm inside class myClass") def hello(self): print("Private Variable value: ",myClass.__privateVar)foo = myClass()foo.hello()foo.__privateMeth
위에서 프로그램,__privMeth 인 방법과__privateVar 개인 변수입니다. 자의 출력을 지금
출력
Private Variable value: 27Traceback (most recent call last): File "C:/Python/Python361/privateVar1.py", line 12, in <module> foo.__privateMethAttributeError: 'myClass' object has no attribute '__privateMeth'
위에서 출력,우리가 볼 수있는 클래스 외부에서”myClass”,당신은에 액세스할 수 없는 개인 방법뿐만 아니라 개인 변수입니다. 그러나 클래스(myClass)내부에서 개인 변수에 액세스 할 수 있습니다. Hello()메서드에서__privateVar 변수에 액세스 할 수 있습니다(위 그림과 같이”Private Variable value:27″).위의 예에서 클래스 내부의 모든 변수와 메소드가 메소드에 의해 공개된다는 것을 이해할 수 있습니다. 때 우리는 선언한 데이터 구성원 개인을 의미만 액세스할 수 있 쪽 클래스고 있는 외부에서 액세스할 수 없다. 변수 또는 메서드를 비공개로 만드는 기술을 데이터 맹 글링이라고합니다. 어떤 식별자의 양식을__스팸(두 개 이상의 주요한 강조,대부분에서 하나 끄는 밑줄)은 텍스트로 대체_classname__스팸,어디 classname 은 현재 클래스 이름을 선도하는 밑줄(s)을 제거됩니다. 이 맹 글링은 클래스의 정의 내에서 발생하는 한 식별자의 구문 론적 위치와 관련없이 수행됩니다.
이중 밑줄 이름은 대신 하위 클래스에 의해 실수로 재정의되지 않도록하기위한 것입니다.