representation of unbound methods - strange behaviour

Fred L. Drake, Jr. fdrake at acm.org
Wed Aug 18 13:28:53 EDT 1999


Stefan Franke writes:
 > Why does this happen:
...
 > <unbound method A.f>
 >                 ^^^

  The "f" part of the name is taken from the function object, not the
name used to access it:

     >>> class B: pass
     >>> def h(): pass
     >>> B.f = B.g = h
     >>> B.f
     <unbound method B.h>
     >>> B.g
     <unbound method B.h>

  Whether this should be this way is open to debate, but the cost of
doing it differently probably involves doing more work in creating the 
unbound method object, which usually gets thrown away quickly.  Since
you don't normally want the repr of it at all, it's probably not worth 
changing, since that would likely slow down all method invocations.


  -Fred

--
Fred L. Drake, Jr.	     <fdrake at acm.org>
Corporation for National Research Initiatives




More information about the Python-list mailing list