私は、次のコードを持っている:それは私に次のエラーを与えるしかしパブリックメソッド内にプライベートメソッドを呼び出せないのはなぜですか?
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
私が間違って何をしているのですか?あなたがself
必要
をもします。http:/ /docs.python.org/tutorial/classes.html#private-variables単一のアンダースコアは「プライベート」変数の一般的な規約です。 'MyClass'から継承したクラスで名前の衝突を避けたいときには、二重アンダースコアを使うのが普通です。二重アンダースコアはあなたがここで望んでいたかもしれないかもしれない名前のmanglingを呼び出すでしょうが、私はあなたがそれを知っていることを確認したいと思いました... –
'__'を使用しないでください。これは、内部的な名前が決して衝突しないようにするために、内部的にPythonが行う「名前の変更」のために予約されています。 –