Reputation: 4718
I like that IPython will fetch docstrings if I type foo.bar?
However, I may sometimes build the foo.bar
method dynamically, using foo.__getattr__
. I could conceivably also generate a docstring dynamically, perhaps in a magic method like foo.__getdoc__
.
Does IPython provide any mechanism for doing this, such that it would discover and display docstrings built on the fly?
Upvotes: 0
Views: 749
Reputation: 46636
That has nothing to do with IPython, IPython just reads the __doc__
attribute of an object. If you dynamically create your objects in the __getattr__
method you should just set their __doc__
attribute as well and everything will work correctly in IPython.
Here is an example:
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
Upvotes: 1