how to inherit docstrings?
Eric Snow
ericsnowcurrently at gmail.com
Thu Jun 9 03:13:06 EDT 2011
On Thu, Jun 9, 2011 at 12:37 AM, Ben Finney <ben+python at benfinney.id.au> wrote:
> Eric Snow <ericsnowcurrently at gmail.com> writes:
>
>> p.s. Am I missing something or can you really not change the docstring
>> of a class? I was thinking about the idea of inheriting class
>> docstrings too.
>
> The docstring of an object (whether function or class or module) is the
> object's ‘__doc__’ attribute. Access that attribute to get the
> docstring; re-bind that attribute to set a different docstring.
>
Sorry, I should have been more clear:
>>> class X:
... "some doc"
...
>>> X.__doc__
'some doc'
>>> X.__doc__ = "another doc"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: attribute '__doc__' of 'type' objects is not writable
That is on 3.3.
> So, it's even possible to do what you ask without decorators at all:
>
> class Foo(object):
> def frob(self):
> """ Frobnicate thyself. """
>
> class Bar(Foo):
> def frob(self):
> pass
> frob.__doc__ = Foo.frob.__doc__
>
> Not very elegant, and involving rather too much repetition; but not
> difficult.
>
Yeah, definitely you can do it directly for each case. However, the
inelegance, repetition, and immodularity are exactly why I am pursuing
a solution. :) (I included a link in the original message to
examples of how you can already do it with metaclasses and class
decorators too.)
I'm just looking for a way to do it with decorators in the class body
without using metaclasses or class decorators.
Thanks
-eric
> --
> \ “We are no more free to believe whatever we want about God than |
> `\ we are free to adopt unjustified beliefs about science or |
> _o__) history […].” —Sam Harris, _The End of Faith_, 2004 |
> Ben Finney
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list