[Python-ideas] inheriting docstrings and mutable docstings for classes

Steven D'Aprano steve at pearwood.info
Sat Aug 25 02:54:15 CEST 2012


On 25/08/12 10:10, Mark Adam wrote:
> In any case, I found myself wanting this auto-inheritance [of docstrings]
> for easier testing with doctest. I don't want my subclasses to mess up
> invariants in my parent classes, and if the doctests were inherited this
> would be easy to check.
>> Just my (late) 2 cents worth after examining the current python issues list.

I have run into exactly that issue myself. But then I realised that this may
not work in practice, and in fact could be outright misleading.
The problem is that my class docstrings probably refer to the class by name:
class Spam:
 def get(self, n):
 """Get n chunks of lovely spam.
 >>> Spam().get(4)
 'Spam spam spam LOVELY SPAM!!!'
 """
class Ham(Spam):
 pass
If Ham.get inherits the docstring, I may be fooled into thinking that I've
tested Ham.get when all I've done is test Spam.get twice.
A better solution to this use-case might be a class decorator which copies
docstrings from superclasses (if they aren't explicitly set in the subclass).
The decorator could optionally apply a bunch of string transformations to
the docstrings:
@copy_docstrings({'spam': 'ham'}, case_mangling=True)
class Ham(Spam):
 pass
-- 
Steven


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /