Python 模块也是对象。所以我想可以通过这种方式测试给定对象是否是模块(/包):
>>> import sys, os, my_module
>>> isinstance(sys, ModuleClass)
True
>>> isinstance(os, ModuleClass)
True
>>> isinstance(my_module, ModuleClass)
True
>>> isinstance(5, ModuleClass)
False
除了“ModuleClass”只是我发明的一个名字,我在文档中找不到类似的东西是否真的存在以及它叫什么。
有这样的课吗?它是我错过的文档中的某个地方吗?
如果不是,是否有另一种方法来查看对象是否是模块?如果它与实现无关,那就更好了。
(我使用的是 Python 2.7,但我想知道 3.x 是否有一些新的解决方案也会很有趣。)
听起来hasattr(obj, '__package__')
(PEP 366)可能是权宜之计,但是 AFAICT 没有特别的理由可以确定将来的某些更新不会放入__package__
其他一些完全不相关的对象中。我更喜欢感觉更强大的解决方案。