2 回答
TA贡献1842条经验 获得超21个赞
您可以像这样动态确定所需的参数:
class MyClass:
def __init__(self, param1, param2):
# do stuff
args = MyClass.__init__.__code__.co_varnames
print(args)
> ('self', 'param1', 'param2')
从那里您可以仅从参数列表中提取所需的参数。使用解包操作符(* 表示 args,** 表示 kwargs)
params = {'param1': 'foo', 'param2': 'bar', 'param3': 'baz'}
params_to_pass = {argname:params[argname] for argname in args[1:]} # ignore 'self'
obj = MyClass(**params_to_pass)
TA贡献1797条经验 获得超6个赞
我认为这会起作用:
#################################
# Load a class
#################################
def __load_class(self, module_name, class_name, params):
try:
loaded_class = getattr(importlib.import_module(module_name), class_name)
obj = loaded_class(*params)
return obj
except Exception as ex:
self.logger.error("FAILED to load class: {0}.{1}\n{2}".format(module_name, class_name, traceback.format_exc()))
然后我会这样称呼它:
self.__load_class(module_name, class_name, [arg1])
或者
self.__load_class(module_name, class_name, [arg1, arg2])
添加回答
举报