0

我喜欢 IPython 会在我输入时获取文档字符串foo.bar?

但是,我有时可能会foo.bar使用foo.__getattr__. 可以想象,我还可以动态生成一个文档字符串,也许是像foo.__getdoc__.

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

4

2 回答 2

3

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

于 2013-08-28T04:18:32.607 回答
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
于 2013-08-28T07:14:02.357 回答