0

入力するとIPythonがdocstringを取得するのが好きですfoo.bar?

foo.barただし、を使用してメソッドを動的に構築することがありfoo.__getattr__ます。おそらく のような魔法のメソッドで、docstring を動的に生成することもできfoo.__getdoc__ます。

IPython は、その場で構築された docstring を検出して表示するように、これを行うためのメカニズムを提供しますか?

4

2 に答える 2

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 に答える