J'écris une classe personnalisée qui enveloppe un dict. En tant que tel, je veux mettre en œuvre getitem pour cela. Je vais aussi utiliser des tuples comme clés dans cette dict. Cependant, lorsque j'essaie de passer un tuple à getitem, Python lance une KeyError. On dirait qu'il est jetant tuple à un int quand je passe à getitem:Comment utiliser les tuples comme paramètres pour __getitem __()?
code:
Class Board(object):
def __getitem__(self, key):
print "type in call: " + type(key)
return self.board[key]
# in main somewhere
board = Board()
print "type before call: " + type((1, 2))
if (1, 2) in board:
print "It's there!"
ouptut:
type before call: <type 'tuple'>
type in call: <type 'int'>
## traceback stuff ##
KeyError: 0
Conseil a besoin d'hériter d'un type de cartographie pour que Python soit heureux? Aussi, pourquoi Python essaie-t-il de faire ce casting en premier lieu?
Vous essayez d'implémenter un test d'adhésion, regardez [Redeclaration de la méthode "in" dans une classe] (http://stackoverflow.com/q/9428419/1132524). –