在python 2中为类设置__doc__

时间:2015-01-08 21:33:56

标签: python metaclass docstring

我以编程方式创建了大量(接近100个)类,我希望能够设置类的docstring。每个类文档字符串将具有相同的基本结构,并且要填写特定的部分。我想定义一个模板字符串,然后在创建类时使用特定于类的参数填充它。

作为我所追求的人为例子,请考虑以下内容

class_docstr = """
This is the docstring for the {name} class.
"""


class A(object):

    def __init__(self):
        pass


class B(object):

    def __init__(self):
        pass


class C(object):

    def __init__(self):
        pass

我想做的是以某种方式设置A.__doc__ = class_docstr.format(name="A"),这样当我致电help(A)时,我会看到类似这样的内容:

class A(__builtin__.object)
 |  This is the docstring for the A class.  

我相信我可能需要使用元类来执行此操作,但我不确定如何。

2 个答案:

答案 0 :(得分:3)

您可以通过分配类定义中的__doc__类变量来设置docstring:

class A(object):
    __doc__ = class_docstr.format(name="A")

    # whatever else

即使在创建类之后,分配给A.__doc__也不起作用,这仍然有效。

答案 1 :(得分:0)

如果你真的想在这里使用元类,那就不难了...

>>> class Meta(type):
...   def __init__(cls, *args):
...     super(Meta, cls).__init__(*args)
...     cls.__doc__ = class_docstr.format(name=cls.__name__)
... 
>>> class A(object):
...   __metaclass__ = Meta
... 
>>> A.__doc__
'\nThis is the docstring for the A class.\n'

话虽如此,这几乎肯定是矫枉过正的......