如何通过引用调用静态方法?

How to call static method by reference?

请看下面的例子:

class MyClass(object):

    @staticmethod
    def __myStaticMethod(someArgs):
        pass

    MY_SPECIAL_METHOD_LIST = [
        __myStaticMethod
    ]

    @staticmethod
    def someOtherMethod():
        m = MyClass.MY_SPECIAL_METHOD_LIST[0]
        print(m)
        m()

如果我现在执行语句 MyClass.someOtherMethod() 我得到一个异常:

<staticmethod object at 0x7fd672e69898>
Traceback (most recent call last):
  File "./test3.py", line 25, in <module>
    MyClass.someOtherMethod()
  File "./test3.py", line 21, in someOtherMethod
    m()
TypeError: 'staticmethod' object is not callable

显然 m 包含对静态方法的引用。但是我不能调用这个方法。为什么?我需要更改什么才能调用此方法?

为了从您的 class 内部调用静态方法,您需要将其解包。将 m() 更改为 m.__func__('params') 就可以了。