动态方法调用的一对多返回值?

时间:2015-04-05 01:10:53

标签: python dynamic methods call

我正在使用字符串按名称访问方法:

def blah(str) :
  method = getattr(self,str)
  x1, x2 = method()

问题有时我正在使用的方法返回一个参数而不是两个,我得到以下错误:

TypeError: 'numpy.float64' object is not iterable

处理单个与多个返回值的最简洁方法是什么。 感谢

1 个答案:

答案 0 :(得分:0)

也许是这样的:

result = method()
try:
    x1, x2 = list(result)
except TypeError:  # "result" is not iterable
    x1, x2 = [result, None]

在Python中,它是easier to ask forgiveness then permission

请注意,这并不包括method返回包含错误元素数量的列表(即不是两个)的情况。

对于这些情况,这样的事情可能是合适的:

result = method()
try:
    result_list = list(result)
except TypeError:  # "result" is not iterable
    result_list = [result]

NUMBER_OF_VARS = 2
final_list = [None] * NUMBER_OF_VARS
final_list[:min(NUMBER_OF_VARS, len(result_list))] = result_list[:NUMBER_OF_VARS]
x1, x2 = final_list