Lambda a écrit :
Hi,
I'd like to define a class to use it as a dictionary key:
Others already answered (define the __hash__ method). Just one point:
the value returned by the __hash__ method should not change for the
lifetime of the object. So if you use instance attributes to compute the
hash, make sure these attributes won't change, else you may have a surprise:
>>> class Foo(object):
... def __init__(self, a, b):
... self.a = a; self.b = b
... def __hash__(self):
... return hash((self.a, self.b))
...
>>> f = Foo("un", "deux")
>>> d = {f:"un deux"}
>>> d[f]
"un deux"
>>> f.a = "zero"
>>> d[f]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: <__main__.Foo object at 0x9d04b2c>
HTH
--
http://mail.python.org/mailman/listinfo/python-list