尝试访问确实存在的 class 方法时出现 AttributeError
AttributeError when trying to access class methods that do exist
我正在尝试为 class 方法编写测试,但是当我调用它们时,我得到一个 AttributeError,它抱怨方法不存在。
class Foo:
@staticmethod
def __method_to_test(x)
return x ** 2
Foo.__method_to_test(3)
最后一行结果如下:AttributeError: type object 'Foo' has no attribute '__method_to_test'
为什么我不能调用该方法?
感谢 Sven Eberth,在此收集他们的回复。
Python 重命名以双下划线开头的方法
使用双下划线启动方法会导致 python 执行名为 name mangling 的操作,这会导致方法从 __method_to_test
重命名为 _Foo__method_to_test
。
像这样调用函数:
Foo._Foo__method_to_test(3)
我正在尝试为 class 方法编写测试,但是当我调用它们时,我得到一个 AttributeError,它抱怨方法不存在。
class Foo:
@staticmethod
def __method_to_test(x)
return x ** 2
Foo.__method_to_test(3)
最后一行结果如下:AttributeError: type object 'Foo' has no attribute '__method_to_test'
为什么我不能调用该方法?
感谢 Sven Eberth,在此收集他们的回复。
Python 重命名以双下划线开头的方法
使用双下划线启动方法会导致 python 执行名为 name mangling 的操作,这会导致方法从 __method_to_test
重命名为 _Foo__method_to_test
。
像这样调用函数:
Foo._Foo__method_to_test(3)