3

オブジェクトがモジュールのクラスまたは関数である場合、絶対インポート パスを文字列として取得する必要があります。例:

>>> from a.b.c import foo
>>> get_import_path(foo)
'a.b.c.foo'

inspect モジュールを調べようとしましたが、それを行うことは何もありません。

4

2 に答える 2

4

あなたがやろうとしていることは本質的に不可能です。 fooは、どのようにインポートしたかを単純に知りません。複数の異なる方法でインポートされた可能性さえあります。私の Linux ボックスでの例:

>>> from os.path import normpath
>>> from posixpath import normpath as normpath2
>>> normpath is normpath2
True

normpathとは同じ関数normpath2オブジェクトです。どのような方法で輸入されたのかを推測することは不可能です。

__module__そうは言っても、関数の属性を確認すると役立つ場合があります。

>>> normpath.__module__
posixpath
>>> normpath2.__module__
posixpath

__module__属性は常に定義されているわけではなく、定義されている場合でも、探している情報が含まれているとは限りません。

于 2011-06-11T20:29:21.647 に答える
0

__file__次の属性を使用します。

>>> import string
>>> string.__file__
'/usr/lib/python2.6/string.pyc'
于 2011-06-11T20:25:34.310 に答える