method = Klass.othermethod considered PITA

John J. Lee jjl at pobox.com
Sat Jun 4 18:43:39 EDT 2005


It seems nice to do this

class Klass:

    def _makeLoudNoise(self, *blah):
        ...

    woof = _makeLoudNoise


One probably wants the above to work as if you'd instead defined woof
in the more verbose form as follows:

    def woof(self, *blah): return self._makeLoudNoise(self, *blah)

It doesn't, though.  Two problems:

1. In derived classes, inheritance doesn't work right:

>>> class A:
...  def foo(s):print 'foo'
...  bar = foo
...
>>> a = A()
>>> a.bar()
foo
>>> class B(A):
...  def foo(s):print 'moo'
...
>>> b = B()
>>> b.bar()
foo
>>>

2. At least in 2.3 (and 2.4, AFAIK), you can't pickle classes that do
   this.


John



More information about the Python-list mailing list