正确的方法来确定对象是否是python中包层次结构的一部分?

时间:2015-03-06 18:47:24

标签: python python-3.x

给定一个如下所示的对象:

>>> type(fooInstance)
<class 'myPackage.mySubPackage.myModule.Foo'>

测试某个对象是否来自myPackage的最佳方法是什么?我能做到:

fooInstance.__module__.split('.')

并尝试以这种方式解析树,但这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以在sys.modules中查找姓名,看看是否有__package__属性:

import sys

package = getattr(sys.modules[fooInstance.__module__], '__package__'), '')
top_level = package.partition('.')[0]

只有在模块是软件包的一部分时,才应设置__package__属性。