python objet de transtypage vers le type int
Je suis en utilisant le module numpy pour récupérer la position de la valeur maximale dans un tableau 2d. Mais ce tableau 2d se compose de MyObjects. Maintenant, je reçois l'erreur:
TypeError: unorderable types: int() > Monobjet()
J'ai essayé de remplacer la fonction int avec ce code:
def int(self):
return self.score
Mais cela ne résout pas mon problème.
Dois-je convertir mon tableau 2d de MyObjects dans un tableau 2d d'entiers, dois-je prolonger l'objet Integer (si cela est possible en python) ou puis-je remplacer cette fonction int() d'une autre manière?
[MODIFIER]
L'intégralité de l'objet:
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
La voie, j'appelle cela de l'objet:
def traceBack(self):
self.matrix = np.array(self.matrix)
maxIndex = self.matrix.argmax()
print(self.matrix.unravel_index(maxIndex))
Merci de poster tous les codes liés à
Qu'attendez-vous la valeur maximale de votre tableau, si il ne contient pas
C'est même pas comment vous êtes censé ignorer la conversion en entier... Indice: c'est
MyObject
, et vous pourrez obtenir de l'aide beaucoup plus facile. Qu'est-ce que self.score
?Qu'attendez-vous la valeur maximale de votre tableau, si il ne contient pas
float
ou int
types de données?C'est même pas comment vous êtes censé ignorer la conversion en entier... Indice: c'est
__int__()
, et de ce que vous faites probablement ne va pas appeler ça de toute façon - je ne crois pas que Python tente de contraindre les objets du même type, quand on les compare.str(self.score)
n'est pas un int...OriginalL'auteur Jetse | 2013-05-22
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser
dans votre MyObject définition de la classe.
__int__(self)
va bien travailler. utilisationint(MyObject)
casting méthode pour convertir votre objet en entier.OriginalL'auteur Kostanos
La
max
fonction prend unkey
qui est appliqué sur les éléments. c'est là que vous mettezscore
Généralement :
lambda s: s.score
(ouoperator.attrgetter("score")
).OriginalL'auteur njzk2