Per esempio, supponiamo faccio questo:È una buona idea hash una classe Python?
>>> class foo(object):
... pass
...
>>> class bar(foo):
... pass
...
>>> some_dict = { foo : 'foo',
... bar : 'bar'}
>>>
>>> some_dict[bar]
'bar'
>>> some_dict[foo]
'foo'
>>> hash(bar)
165007700
>>> id(bar)
165007700
Sulla base di ciò, sembra che la classe è sempre un hash come il suo numero di identificazione. Pertanto, non dovrebbe esserci alcun pericolo di preoccuparsi, ad esempio, di un hashing bar
come valore foo
o bar
o di hash che cambiano se muto la classe.
Questo comportamento è affidabile o ci sono dei trucchi qui?
Qualsiasi classe il cui * metaclass * non abbia una funzione __hash __(). –
Va notato che sebbene questo sia nella pagina "cosa c'è di nuovo per Python 2.6", questo comportamento sembra funzionare per me in Python 2.4. –
@Jason Ho cambiato il riferimento alla documentazione generale. –