检查对象的导入路径字符串
如果一个对象是某个模块的类或函数,我需要把它的绝对导入路径拿到,格式是字符串。举个例子:
>>> from a.b.c import foo
>>> get_import_path(foo)
'a.b.c.foo'
我试着查看一下inspect模块,但发现没有办法做到这一点。
2 个回答
0
使用 __file__
属性:
>>> import string
>>> string.__file__
'/usr/lib/python2.6/string.pyc'
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__
属性并不总是存在,即使存在,也不一定包含你想要的信息。