À l'aide de l'objet en tant que clé du dictionnaire en Python - fonction de Hachage

Je suis en train d'utiliser un objet comme valeur de la clé pour un dictionnaire en Python. J'ai suivi les recommandations de certains autres postes dont nous avons besoin pour mettre en œuvre 2 fonctions: de hachage et eq

Et avec qui, j'attends la suite de travailler, mais il n'a pas.

class Test:
    def __init__(self, name):
        self.name = name

    def __hash__(self):
        return hash(str(self.name))

    def __eq__(self, other):
        return str(self.name) == str(other,name)


def TestMethod():
    test_Dict = {}

    obj = Test('abc')
    test_Dict[obj] = obj

    print "%s" %(test_Dict[hash(str('abc'))].name)       # expecting this to print "abc" 

Mais il me donne une clé de message d'erreur:

KeyError: 1453079729188098211

Quelqu'un peut-il aider à éclairer moi pourquoi cela ne fonctionne pas?

  • Quelle est la version de Python que vous utilisez? return str(self.name) == str(other,name) a apparemment un bug dans str(other,name) je ne comprends pas comment ce n'est pas soulevée. Même si c'est str(other.name) il ne fonctionne pas car hash(str('abc')) n'a pas .name attribut
InformationsquelleAutor Ken Ly | 2013-07-03