call a private method in an imported class
本问题已经有最佳答案,请猛点这里访问。
我在一些代码中遇到了一个意外的问题,可以用一个更简单的例子来重现它:
文件1.Py
1 2 3 4 5 | class FirstClass: def function1(self): print("hello from function1") def __function2(self): print("hello from function2") |
文件2.Py
1 2 3 4 5 6 7 | from file1 import FirstClass fc = FirstClass() fc.function1() fc.__function2() |
……接下来发生的事情是:
1 2 3 4 5 6 | $ python file2.py hello from function1 Traceback (most recent call last): File"file2.py", line 7, in <module> fc.__function2() AttributeError: FirstClass instance has no attribute '__function2' |
你能做些什么才能使对
名称以2个下划线字符开头的函数不打算从其类外部调用。为了允许用户在子类中重新定义它,每个类都调用它的一个类(而不是普通的方法重写),它的名称被破坏为
因此,在这里,您确实不应该直接使用它,但是如果您确实需要,您应该能够做到:
1 | fc._FirstClass__function2() |