[Python-Dev] 'unhashable type' and new style classes
Jack Jansen
Jack.Jansen@oratrix.com
Tue, 31 Dec 2002 00:15:03 +0100
On maandag, dec 30, 2002, at 23:26 Europe/Amsterdam, Guido van Rossum
wrote:
>> On maandag, dec 30, 2002, at 17:30 Europe/Amsterdam, Guido van Rossum
>> wrote:
>>> The default implementation of __hash__ must match the default
>>> implementation of __cmp__ (and rich comparisons, __eq__ etc.). So
>>> the
>>> default implementation cannot raise an exception, because objects are
>>> defined to be immutable by default. (Maybe this was a mistake, but
>>> it's not so easy to change without causing backwards
>>> incompatibilities.)
>>
>> Is it an option to enforce that these methods are overridden together,
>> then? I.e. if you override any of them you must override all of them,
>> otherwise you get a warning?
>
> That's nice, but I'm not sure I can see right away how to do the
> warning.
I assume there's some equivalent of PyType_Ready, or not? Wouldn't that
be the
right spot?
> Also, there are cases where a base class defines both
> properly, and then a subclass overrides one but not the other. Is
> that worth a warning or not? That depends on how they change it!
It's easy enough to add dummy methods that just call the same method in
the base
class. But still: this whole warning idea could be overkill, that's for
you to decide:-)
--
- Jack Jansen <Jack.Jansen@oratrix.com>
http://www.cwi.nl/~jack -
- If I can't dance I don't want to be part of your revolution -- Emma
Goldman -