如何使用方法名和类名调用类的静态方法

sys*_*out 3 python

从这样的类开始:

class FooClass(object):
    @staticmethod
    def static_method(x):
        print x
Run Code Online (Sandbox Code Playgroud)

通常,我会调用类的静态方法:

FooClass.static_method('bar')
Run Code Online (Sandbox Code Playgroud)

是否可以调用只具有类名和方法名的静态方法?

class_name = 'FooClass'
method_name = 'static_method'
Run Code Online (Sandbox Code Playgroud)

Ivo*_*ijk 9

你不应该像其他答案中建议的那样混淆locals().如果您将类名作为字符串并需要解析它,请使用某种类型的注册表.字典可以正常工作.例如

class FooClass(object):
    @staticmethod
    def static_method(x):
        print x

registry = {'FooClass':FooClass}
Run Code Online (Sandbox Code Playgroud)

(我假设您将要向此注册表添加更多类)

然后查找变得几乎无关紧要:

getattr(registry['FooClass'], 'static_method')("bar")
Run Code Online (Sandbox Code Playgroud)