TypeError:不支持的操作数类型 - :'instance'和'float'

时间:2015-06-30 12:35:57

标签: python python-2.7

这段代码太长了,无法发布整个内容,所以希望问题只是包含在这个循环中,但我真的很困惑这里有什么问题。我有这个循环:

 if index == 1:
         mag_diffs = []
         counter = 0

         while (image_objects[counter].magr_value > -6.0) and (image_objects[counter].magr_value < -4.0) and (counter < 5):
             mag_diff = (image_objects[counter].magr_value - new_s_objects[counter].magr)
             print 'mag_diff is:'
             print mag_diff
             mag_diffs.append(mag_diff)
             counter +=1


         mag_diffs.sort()
         mag_offset = np.median(mag_diffs)

当我尝试在此处调用它时,它会在代码中遇到错误:

 sextractor_mr.append((new_s_objects[index].magr + mag_offset))

它给出了这个错误:

Traceback (most recent call last):
  File "sextractor_reader.py", line 272, in <module>
    sextractor_mr.append((new_s_objects[index].magr + mag_offset))
IndexError: list index out of range

但是我也发现while循环条件永远不会被满足(它应该是五次)所以当我注释掉while循环并删除缩进时,它就会在while循环中执行时间,我收到这个错误:

Traceback (most recent call last):
  File "sextractor_reader.py", line 252, in <module>
    mag_diff = (image_objects[counter].magr_value - new_s_objects[counter].magr)
TypeError: unsupported operand type(s) for -: 'instance' and 'float'

我试图查找错误消息,但没有找到与我的情况类似的内容。我对课程不是很满意所以我认为它与尝试使用这些课程有关。希望错误包含在我给你的内容中,但代码真的太长了,无法发布所有内容(如1000行)。

编辑:好吧,这里有什么问题。我打印了     image_objects [0] .magr_value 在if语句之上,它返回

<__main__.SDSS_object instance at 0x10bd4d7a0>

这根本不是我想要的。我想要一个有价值的浮动。我认为这就是你打电话给你的课程。

1 个答案:

答案 0 :(得分:0)

您必须向我们提供更多详细信息以便为您提供详细信息,但我可以为您解码错误消息。它告诉您image_objects[counter].magr_value不是数字类型。它是一些其他类型(具体为instance),不能从中减去数字。像俞昊指出的那样,我们需要一个完整的例子来帮助你。