假设我想解析一个包含以下行的文本文件:
sampleMethod
sampleParameter
sampleParameter2
其中sampleMethod是方法的字符串,样本参数可以是任何类型的值。
我知道我可以使用getattr来动态调用我们知道模块和方法名称的内容:
output = getattr(componentName, sampleMethod)(sampleParameter)
但如果我们动态发现多个参数,我怎么能这样做呢?
例如,如果文本文件有:
sampleMethod
sampleParameter
sampleParameter2
sampleParameter3
我们怎样才能动态地做这样的事?
output = getattr(componentName, sampleMethod)(sampleParameter, sampleParameter2, sampleParameter3)
答案 0 :(得分:0)
您可以unpack您的参数列表(特殊*):
# you could dynamically build the list
parameterList = [sampleParameter, sampleParameter2, sampleParameter3]
# then pass as parameter
output = getattr(componentName, sampleMethod)(*parameterList)
请注意,如果您确定parameterList
不会大于sampleMethod
的参数数量,则不必使用arbitrary argument lists(否则您可能会收到运行时错误)
如果您不确定,您仍然可以先切片列表或使用任意参数列表。
答案 1 :(得分:0)
您可以在函数定义的属性中使用*。它会将所有不匹配的参数视为元组。例如:
def print_for(*args):
print args
print_for(1,2,3)
print_for(1,2,3,4)