我以编程方式创建了大量(接近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.
我相信我可能需要使用元类来执行此操作,但我不确定如何。
答案 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'
话虽如此,这几乎肯定是矫枉过正的......