我喜欢如果输入foo.bar?
但是,我有时可能会使用foo.bar
动态构建foo.__getattr__
方法。我可以想象也可以动态生成文档字符串,可能是像foo.__getdoc__
这样的魔术方法。
IPython是否提供了执行此操作的任何机制,以便它能够发现并显示动态构建的文档字符串?
答案 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