从(Python)类/类型中检索Package.Module.Class名称

时间:2011-12-08 13:22:36

标签: python

是的,说我有这种结构:(我碰巧实际拥有)

  • 界面(文件夹/包裹)
    • Test.py(模块)
      • 测试(课程)

现在我希望将整个结构(Interface.Test.Test)作为存储在某处的字符串。 我知道我可以使用type(myTestObjectInstance)myTestObjectInstance.__class__但是它会检索一个类型对象,其打印方式类似于<class 'Interface.Test.Test'>

但从那时起,我不知道如何获得实际的结构部分。我当然可以解析字符串,但我想有一种更简单的方法可以做到这一点?

[编辑]
Larsmans提供了一个答案,但它没有完全回答我想做的事情:
如果我所提供的只是那个类型对象本身(type(myTestObjectInstance)

,那么他的答案将不起作用

1 个答案:

答案 0 :(得分:1)

使用inspect.getmodule您可以(有时)找到定义对象的模块,例如

>>> from collections import defaultdict
>>> import inspect
>>> inspect.getmodule(defaultdict)
<module 'collections' from '/usr/lib/python2.6/collections.pyc'>

可以使用__name__找到模块名称。请注意,由于重新导出,定义模块不必是您导入的模块:

>>> from scipy.sparse import csr_matrix
>>> inspect.getmodule(csr_matrix).__name__
'scipy.sparse.csr'