在 python 2 中为 class 设置 __doc__

Set __doc__ for class in python 2

我正在以编程方式制作大量(接近 100 个)classes,我希望能够设置 class 的文档字符串。每个 class 文档字符串都将具有相同的基本结构,需要填写特定的部分。我想定义一个模板字符串,然后在 class 时用 class 个特定参数填充它] 已创建。

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

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.  

我想我可能需要使用元class来做到这一点,但我不确定如何。

您可以通过分配给 class 定义中的 __doc__ class 变量来设置文档字符串:

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

    # whatever else

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

如果你真的想在这里使用元类,应该不难...

>>> 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'

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