Question about accessing class-attributes.

Thomas Heller theller at python.net
Wed Apr 30 11:18:52 CEST 2003


Michael Hudson <mwh at python.net> writes:

> Steven Taschuk <staschuk at telusplanet.net> writes:
> 
> > Quoth Michael Hudson:
> > > mis6 at pitt.edu (Michele Simionato) writes:
> >   [...]
> > > > 2) why you say this makes classes unhashable ?
> > > 
> > > Well, I thought it would.  I was wrong:
> >   [...]
> > > Then you get this kind of weirdness:
> > > 
> > > />> class C(type):
> > > |..     def __eq__(self, other):
> > > |..         return 1
> > > \__ 
> > 
> > Can't the instances of this metaclass be made sensible for use in
> > dicts simply with
> >     def __hash__(self):
> >         return hash(C)
> > for example?  (To ensure that if x == y then hash(x) == hash(y),
> > as desired.)  
> 
> Yes!  The point I was making was that *not* doing that *doesn't* lead
> to error messages.
> 
> Hang on...
> 
> />> class C(object):
> |..  def __eq__(self, other):
> |..   return 1
> \__ 
> ->> hash(C())
> 137007476
> />> class C:
> |..  def __eq__(self, other):
> |..   return 1
> \__ 
> ->> hash(C())
> Traceback (most recent call last):
>   File "<input>", line 1, in ?
> TypeError: unhashable instance
> 
> Hmm.  I wonder if this is deliberate...
> 

See also http://www.python.org/sf/660098

Thomas




More information about the Python-list mailing list