Bonsoir !
Je lis dans la doc python (http://python.org/doc/2.4.1/tut/no [...] 0000000000) que :
... dictionaries are indexed by keys, which can be any immutable type; strings and numbers can always be keys. Tuples can be used as keys if they contain only strings, numbers, or tuples; if a tuple contains any mutable object either directly or indirectly, it cannot be used as a key. You can't use lists as keys, since lists can be modified in place using their append() and extend() methods, as well as slice and indexed assignments.
|
Donc je n'ai pas le droit d'écrire :
d = { [1,2] : "mon machin pour 1,2" } |
et effectivement Python me l'interdit (list object are unhashable)
Bon. De même il va de soi que ceci m'est interdit (et en effet, même message d'erreur)
class myclass(list):
____pass
d = { myclass() : "mon machin pour myclass()" }
|
Mais alors pourquoi Python me laisse-t-il écrire ceci ??? (pas d'erreur signalée) :
class myclass(object):
____myclass_o = []
d = { myclass() : "mon machin pour myclass()" }
|
myclass_o est bien un type mutable, non ? Est-ce Python qui ne voit pas le problème ou moi qui n'est pas compris la doc ?
edit : typos
Message édité par suizokukan le 03-10-2005 à 22:52:22
---------------
rule #1 : trust the python