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