Python 模块也是对象。所以我想可以通过这种方式测试给定对象是否是模块(/包):
>>> import sys, os, my_module
>>> isinstance(sys, ModuleClass)
True
>>> isinstance(os, ModuleClass)
True
>>> isinstance(my_module, ModuleClass)
True
>>> isinstance(5, ModuleClass)
False
除了“ModuleClass”只是我发明的一个名称,我无法在文档中找到是否确实存在类似的名称以及它的名称。
有这样的类(class)吗?我错过了文档中的某个地方吗?
如果不是,是否有另一种方法来查看一个对象是否是一个模块?如果它与实现无关,那就更好了。
(我使用的是 Python 2.7,但我想知道 3.x 是否有一些新的解决方案也很有趣。)
这听起来像 hasattr(obj, '__package__')
( PEP 366 ) 是一个可能的权宜之计,但是 AFAICT 没有特别的理由可以确定 future 的更新不会把 __package__
到其他一些完全不相关的对象中。我更喜欢感觉更强大的解决方案。
最佳答案
您可以使用 inspect.ismodule
:
>>> import inspect
>>> import os
>>> os2 = object()
>>> inspect.ismodule(os)
True
>>> inspect.ismodule(os2)
False
关于python - 如何测试 Python 对象是否是模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17049806/