Using equals operator without changing reference pointer

Terry Reedy tjreedy at
Fri Jan 30 05:03:45 CET 2009

Erik Max Francis wrote:
> mark.seagoe at wrote:
>> Is there a way to lock down myInst so that it still refers to the
>> original object, and is there some special member that will allow me
>> to override the equals operator in this case?  Or is that simply
>> blasphemous against everything Python holds sacred?  Certainly there
>> is some keyword that I don't know about.
> No.  The assignment operator with a bare name on the left hand side is 
> not overridable.

So that 'name = ob' *always* binds name to ob.  That is one thing one 
can depend on when reading Python code.

> You can override attribute access, however, with 
> .__getattr__/.__getattribute__.

I presume that you have over-riden __setitem__ in addition to 
__getitem__ so that myOb[0] = 1 sets the bit. You could add a branch to 
__setitem__ (or define __setslice__ in 2.x) so that myOb[:] = 0x55 does 
just what you want it to -- set all bits.  Being able to get/set 
contiguous bits might be something you want anyway.


PS. When asking about internal details, specify version of interest, as 
there have been minor changes.

More information about the Python-list mailing list