我在一些代码中遇到了一个意想不到的问题,可以用一个更简单的例子来重现:
文件1.py
class FirstClass:
def function1(self):
print("hello from function1")
def __function2(self):
print("hello from function2")
文件2.py
from file1 import FirstClass
fc = FirstClass()
fc.function1()
fc.__function2()
……接下来会发生什么:
$ 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'
如何才能使对__function2
的调用正常工作?我真的不应该进入那个导入的类并公开那个私有方法。你知道吗
名称以2个下划线字符开头的函数不打算从其类外部调用。为了允许用户在子类中重新定义它,每个类都调用它的子类(而不是正常的方法重写),它的名称是mangledto
_className__methodName
。你知道吗所以在这里,你真的不应该直接使用它,但如果你真的需要,你应该能够做到:
相关问题 更多 >
编程相关推荐