Override a method but inherit the docstring
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Fri Jul 17 03:52:19 EDT 2009
On Fri, 17 Jul 2009 12:58:48 +1000, Ben Finney wrote:
>> Using a decorator in this manner requires repeating the super class
>> name. Perhaps there is a way to get the bases of BarGonk, but I don't
>> think so, because at the time that the decorator is called, BarGonk is
>> not yet fully defined.
>
> Yes, I tried a few different ways, but within the decorator it seems the
> function object is quite unaware of what class it is destined for.
When the decorator is called, the function object is just a function
object, not a method, so there is no concept of "what class it is
destined for".
>>> def dec(func):
... print type(func)
... try:
... print func.im_class
... except:
... print "no im_class"
... return func
...
>>> class Test(object):
... @dec
... def spam(self):
... pass
...
<type 'function'>
no im_class
>>> type(Test.spam)
<type 'instancemethod'>
>>> Test.spam.im_class
<class '__main__.Test'>
I suppose you could try to determine what namespace you're currently when
the class is created, but that's surely going to be fragile and messy.
--
Steven
More information about the Python-list
mailing list