Python 在docstring中动态生成文档是一种不好的做法吗

Python 在docstring中动态生成文档是一种不好的做法吗,python,documentation,definition,docstring,Python,Documentation,Definition,Docstring,假设我有一个具有函数的类: class Foo: def one(): return 1 def two(): return 2 def three(): return 3 def four(): return 4 如果我想在Foo中添加一个docstring(\uuuu doc\uuu),它显示了我可以单独写出每个方法的所有函数: class Foo: """ one()

假设我有一个具有函数的类:

class Foo:
    def one():
        return 1
    def two():
        return 2
    def three():
        return 3
    def four():
        return 4
如果我想在
Foo
中添加一个docstring(
\uuuu doc\uuu
),它显示了我可以单独写出每个方法的所有函数:

class Foo:
    """
    one()
    two()
    three()
    four()"""
但它也可以动态生成,即在运行时创建:

class Foo:
    def one():
        return 1
    def two():
        return 2
    def three():
        return 3
    def four():
        return 4

Foo.__doc__ = '()\n'.join(dir(Foo)) # __doc__ automatically list all methods with Foo (private and non private)
这也可能有其他用途。例如,运行实际使用的函数的示例

记录较大模块的工作量较小,但这意味着
\uuuuu doc\uuuuuu
的性能会降低(因为这几乎从未在成品中使用过,我看不出这是一个问题),并且不再是一个常量字符串


这被认为是不好的做法吗?

您对
\uuuuu doc\uuuuu
的意图是什么?典型的用例是查看
帮助(Foo)
,它应该已经列出了类的方法,并带有签名@安德拉斯蒂克:这是真的。然而,我想很多人会先检查
\uuuu doc\uuu
。我确实想在那里参考一些帮助,而不是完全忽略
\uuuuu doc\uuuuu
(这将是另一种选择)。我还在开发一个大模块。这是不整洁的,但基本上我有一个类,我在里面添加了一些我仍在测试的函数(它们将被删除,或者根据它们的执行方式将它们的位置更改为一个新类)。我还不断根据需要添加新功能。我不想手动记录
,因为它们可能会在一小时后被删除。如果你不想“手动”记录你的类,它将如何记录
Foo.\uuuu doc\uuuu='()\n.join(dir(Foo))
并没有添加任何通过
help(Foo)
@mzjn无法获得的新信息,它只是要添加到
\uu doc\uuuuuu
中,这样它就不会说它是未定义的。如果在类体中有一个常规的docstring,它将填充类的
\uu doc\uuuuuu
属性。查看您对
\uuuuuu doc\uuuuu
的意图是什么?典型的用例是查看
帮助(Foo)
,它应该已经列出了类的方法,并带有签名@安德拉斯蒂克:这是真的。然而,我想很多人会先检查
\uuuu doc\uuu
。我确实想在那里参考一些帮助,而不是完全忽略
\uuuuu doc\uuuuu
(这将是另一种选择)。我还在开发一个大模块。这是不整洁的,但基本上我有一个类,我在里面添加了一些我仍在测试的函数(它们将被删除,或者根据它们的执行方式将它们的位置更改为一个新类)。我还不断根据需要添加新功能。我不想手动记录
,因为它们可能会在一小时后被删除。如果你不想“手动”记录你的类,它将如何记录
Foo.\uuuu doc\uuuu='()\n.join(dir(Foo))
并没有添加任何通过
help(Foo)
@mzjn无法获得的新信息,它只是要添加到
\uu doc\uuuuuu
中,这样它就不会说它是未定义的。如果在类体中有一个常规的docstring,它将填充类的
\uu doc\uuuuuu
属性。看见