関数内の関数はローカル変数スコープにあります。関数のローカル変数には、関数の外部からアクセスできません。
>>> def x():
... def y():
... pass
...
>>> x
<function x at 0x7f68560295f0>
>>> x.y
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'y'
Sphinxが関数への参照を取得できない場合、それを文書化することはできません。
動作する可能性のある回避策は、次のように関数を関数の変数に割り当てることです。
>>> def x():
... def _y():
... pass
... x.y = _y
...
最初はアクセスできません:
>>> x.y
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'y'
ただし、関数を最初に呼び出した後は、次のようになります。
>>> x()
>>> x.y
<function _y at 0x1a720c8>
これは、Sphinxがモジュールをインポートするときに関数が実行される場合に機能する可能性があります。