尝试访问确实存在的 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)