我喜欢 IPython 会在我输入时获取文档字符串foo.bar?
但是,我有时可能会foo.bar
使用foo.__getattr__
. 可以想象,我还可以动态生成一个文档字符串,也许是像foo.__getdoc__
.
IPython 是否提供任何机制来执行此操作,以便它会发现并显示动态构建的文档字符串?
你可以设置foo.__doc__ = "my doc string"
.
这与 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