python将对象转换为int

时间:2013-05-22 14:03:08

标签: python object casting integer

我正在使用numpy模块检索二维数组中最大值的位置。但是这个2d数组由MyObjects组成。现在我收到了错误:

  

TypeError:unorderable类型:int()>为MyObject()

我尝试使用以下代码覆盖int函数:

def int(self):
    return self.score

但这并不能解决我的问题。 我是否必须将我的2d MyObjects数组转换为2d整数数组,是否必须扩展Integer对象(如果在python中可以这样做)或者我可以用其他方式覆盖这个int()函数吗?

[编辑]

完整的对象:

class MyObject:
def __init__(self, x, y, score, direction, match):
    self.x = x
    self.y = y
    self.score = score
    self.direction = direction
    self.match = match

def __str__(self):
    return str(self.score)

def int(self):
    return self.score

我称这个对象的方式:

 def traceBack(self):
    self.matrix = np.array(self.matrix)
    maxIndex = self.matrix.argmax()
    print(self.matrix.unravel_index(maxIndex))

2 个答案:

答案 0 :(得分:9)

尝试使用

...
def __int__(self):
    return self.score
...

test = MyObject(0, 0, 10, 0, 0)
print 10+int(test)

# Will output: 20

在MyObject类定义中。

答案 1 :(得分:1)

max函数需要在元素上应用key。这就是你放score

的地方

通常:

a = max(my_list, key=score)