[Python-Dev] repr(x) != x.__repr__()

Patrick K. O'Brien pobrien@orbtech.com
Thu, 28 Mar 2002 09:46:51 -0600


[Oren Tirosh]
> 
> This phenomenon is not really specific to repr(). It occurs with 
> new-style 
> classes when methods are assigned.  
> 
> Example:
> 
> class A(object):
>   def __repr__(self):
>     return 'abc'
> 
> >>>a = A()
> >>>a.__repr__ = lambda: 'abc'
> >>>repr(a)
> 'abc'
> >>>a.__repr__()
> '123'
> 

You've got a typo in there. Here is the fixed version:

>>> class A(object):
...     def __repr__(self):
...         return 'abc'
...     
>>> a = A()
>>> a.__repr__ = lambda: '123'
>>> repr(a)
'abc'
>>> a.__repr__()
'123'
>>> 

Of course, the odd behavior is still there.

---
Patrick K. O'Brien
Orbtech