introspection:如何通过字符串方法名调用类中的python静态方法

本问题已经有最佳答案,请猛点这里访问。

我定义了以下字符串,它们指定了python模块名、python类名和静态方法名。

1
2
3
module_name ="com.processors"
class_name ="FileProcessor"
method_name ="process"

我想调用method_name变量指定的静态方法。

如何在python 2.7+中实现这一点


使用__import__函数将模块名作为字符串导入模块。

使用getattr(object, name)访问对象(模块/类或任何东西)的名称

你可以这样做

1
2
3
4
module = __import__(module_name)
cls = getattr(module, claas_name)
method = getattr(cls, method_name)
output = method()

试试这个:

1
2
3
4
5
6
7
8
9
10
# you get the module and you import
module = __import__(module_name)

# you get the class and you can use it to call methods you know for sure
# example class_obj.get_something()
class_obj = getattr(module, class_name)

# you get the method/filed of the class
# and you can invoke it with method()
method = getattr(class_obj, method_name)


您可以为此使用importlib。尝试importlib.import(module +"." + class +"."+ method)

注意,如果您要通过import module.class.method导入这个连接的字符串,那么它应该与您所要导入的字符串完全相同