【发布时间】:2015-01-08 21:33:56
【问题描述】:
我正在以编程方式制作大量(接近 100 个)类,我希望能够设置类的文档字符串。每个类文档字符串都有相同的基本结构,需要填写特定的部分。我想定义一个模板字符串,然后在创建类时用类特定的参数填充它。
作为我所追求的人为示例,请考虑以下内容
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.
我相信我可能需要使用元类来执行此操作,但我不确定如何。
【问题讨论】:
-
您可以在元类的
__new__方法中更新类字典的__doc__键,注意这必须在实际创建类之前完成。 -
这有点违背了文档字符串的目的,因为浏览类定义不会给您提供查看文档的明显方式。是否有理由需要以这种方式生成您的文档字符串?
-
我希望文档字符串更多地用于在 python 或 ipython repl 上进行交互式探索,并通过 sphinx 自动生成 html 文档,而不是记录源代码。
-
@AshwiniChaudhary -- 你为什么说它需要在创建类之前发生? doc 属性应该是可写的...
-
@mgilson 对于
类型的类是不可能的。但是嗯……元类使之成为可能。 ideone.com/UPKHq8
标签: python metaclass docstring