如何在python中通过引用调用静态方法[重复]

Posted

技术标签:

【中文标题】如何在python中通过引用调用静态方法[重复]【英文标题】:How to call static method by reference in python [duplicate] 【发布时间】:2017-07-05 14:17:51 【问题描述】:

请看下面的例子:

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 包含对静态方法的引用。但我不能调用这个方法。为什么?我需要更改什么才能调用此方法?

【问题讨论】:

看这里:***.com/questions/12718187/… @haffla:很好的发现。谢谢。 有趣。我搜索了一个答案,但没有找到那个答案。谢谢。 【参考方案1】:

为了从你的类中调用一个静态方法,你需要解包它。将m() 更改为m.__func__('params'),你会很好。

【讨论】:

谢谢。这就是我一直在寻找的。​​span>

以上是关于如何在python中通过引用调用静态方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中通过引用传递无限参数[重复]

指针是不是被认为是 C 中通过引用调用的方法?

在 C# 中通过引用传递对象和对象列表

无法在 MySQLi 中通过引用传递参数 [重复]

如何在bash脚本中通过函数调用将参数/参数从一个函数传递到另一个函数[重复]

在c ++中通过引用返回类的向量[重复]