在 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'
话虽如此,这几乎可以肯定是矫枉过正...
我正在以编程方式制作大量(接近 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'
话虽如此,这几乎可以肯定是矫枉过正...