我正在使用字符串按名称访问方法:
def blah(str) :
method = getattr(self,str)
x1, x2 = method()
问题有时我正在使用的方法返回一个参数而不是两个,我得到以下错误:
TypeError: 'numpy.float64' object is not iterable
处理单个与多个返回值的最简洁方法是什么。 感谢
答案 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