Inheriting methods but over-riding docstrings

Steve Holden steve at holdenweb.com
Mon Jan 18 03:23:45 CET 2010


Gabriel Genellina wrote:
> En Sat, 16 Jan 2010 14:55:11 -0300, Steven D'Aprano
> <steve at remove-this-cybersource.com.au> escribió:
> 
>> I have a series of subclasses that inherit methods from a base class, but
>> I'd like them to have their own individual docstrings. The obvious
>> solution (other than copy-and-paste) is this:
>>
>>
>> class Base(object):
>>     colour = "Blue"
>>     def parrot(self):
>>         """docstring for Base"""
>>         return "Norwegian %s" % self.colour
>>
>>
>> class SubClass(Base):
>>     colour = "Red"
>>     def parrot(self):
>>         """docstring for Subclass"""
>>         return super(Subclass, self).parrot()
>>
>>
>> but that adds an awful lot of boilerplate to my subclasses. Are there any
>> other good solutions to this problem?
> 
> Methods don't have docstrings; functions do. So one has to "clone" the
> function to set a new docstring.
> 
On behalf of all methods I would like to say "We demand the right to
docstrings".

>>> print abs.__doc__
abs(number) -> number

Return the absolute value of the argument.
>>>

Perhaps I am misunderstanding "don't have docstrings". This code:

>>> class TheHellOfIt:
...     """Classes, of course, as first-class citizens and have
docstrings."""
...     def method(self):
...         """Discrimination against methods, I call it."""
...         pass
...
>>> print TheHellOfIt.method.__doc__
Discrimination against methods, I call it.
>>> import sys
>>> help(sys.modules["__main__"])

Gives:

Help on built-in module __main__:

NAME
    __main__

FILE
    (built-in)

CLASSES
    TheHellOfIt

    class TheHellOfIt
     |  Classes, of course, as first-class citizens and have docstrings.
     |
     |  Methods defined here:
     |
     |  method(self)
     |      Discrimination against methods, I call it.

So, are the demands of the methods reasonable, or do they already have
what they are so loudly demanding?

regards
 Steve
-- 
Steve Holden           +1 571 484 6266   +1 800 494 3119
PyCon is coming! Atlanta, Feb 2010  http://us.pycon.org/
Holden Web LLC                 http://www.holdenweb.com/
UPCOMING EVENTS:        http://holdenweb.eventbrite.com/




More information about the Python-list mailing list