有没有办法动态生成IPython文档字符串?

时间:2013-08-28 04:02:43

标签: python ipython dispatch docstring

我喜欢如果输入foo.bar?

,IPython会获取文档字符串

但是,我有时可能会使用foo.bar动态构建foo.__getattr__方法。我可以想象也可以动态生成文档字符串,可能是像foo.__getdoc__这样的魔术方法。

IPython是否提供了执行此操作的任何机制,以便它能够发现并显示动态构建的文档字符串?

2 个答案:

答案 0 :(得分:3)

您可以设置foo.__doc__ = "my doc string"

答案 1 :(得分:1)

这与IPython无关,IPython只读取对象的__doc__属性。如果您使用__getattr__方法动态创建对象,则只需设置其__doc__属性,一切都将在IPython中正常运行。

以下是一个例子:

class A(object):
    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return 'A[%s]' % self.name

class Test(object):
    def __getattr__(self, name):
        a = A(name)
        a.__doc__ = 'My a documentation'
        return a

In [11]: t = Test()
In [12]: t.foo
A[foo]
In [13]: t.foo?
Type:       A
String Form:A[foo]
Docstring:  My a documentation
相关问题