나는 다음과 같은 코드가 있습니다public 메서드 안에있을 때 private 메서드를 호출 할 수없는 이유는 무엇입니까?
class MyClass:
def __private(self):
print "Hey man! This is private!"
def public(self):
__private()
print "I don't care if you see this!"
if __name__ == '__main__':
x = MyClass()
x.public()
그러나 그것은 나에게 다음과 같은 오류 제공 : 내가 뭘 잘못을
NameError: global name '_MyClass__private' is not defined
을하고 있는가?
을 또한 : HTTP ://docs.python.org/tutorial/classes.html#private-variables 단일 밑줄은 "개인"변수의 일반적인 규칙입니다. MyClass 클래스를 상속받은 클래스에서 이름 충돌을 피하기 위해서는 일반적으로 두 개의 밑줄 만 사용해야합니다. 더블 언더 스코어는 네가 원했던 것일 수도있는 이름 맹 글링을 호출 할 것이지만, 네가 그것을 알고 있는지 확인하고 싶었다. ... –
'__'을 사용하지 마십시오. 그것은 "name mangling"을 위해 예약되어 있습니다. Python은 내부 이름이 충돌하지 않도록하기 위해 내부적으로 수행합니다. –