从这样的类开始:
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)
你不应该像其他答案中建议的那样混淆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)