Docstrings for class attributes

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Wed Sep 24 07:52:04 CEST 2008


On Tue, 23 Sep 2008 15:23:35 +1000, Tom Harris wrote:

> Greetings,
> 
> I want to have a class as a container for a bunch of symbolic names for
> integers, eg:
> 
> class Constants:
>     FOO = 1
>     BAR = 2
> 
> Except that I would like to attach a docstring text to the constants, so
> that help(Constants.FOO) will print some arbitrary string. Sort of a
> very limited implementation of PEP 224. The only solution that I can see
> is to subclass int.__new__(), since once I have an int all it's
> attributes are immutable.



Others have suggested solutions, which may be better, but for 
completeness consider using properties:

def make_const(value, doc=''):
    def getter(self):
        return value
    return property(getter, None, None, doc)


class Foo(object):
    x = make_const(1.234, 'a special number')


The only gotcha is that while help(Foo.x) works, help(Foo().x) does not.


-- 
Steven



More information about the Python-list mailing list