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

2024-09-24 22:31:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

fooInstance.__module__.split('.')

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


Tags: 对象方法footype方式classsplitmodule
1条回答
网友
1楼 · 发布于 2024-09-24 22:31:58

您可以在sys.modules中查找名称,并查看是否存在__package__属性:

import sys

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

仅当模块是包的一部分时,才应设置__package__属性

相关问题 更多 >