Python模块也是对象.所以我想可以通过这种方式测试给定对象是否是模块(/ package):
>>> import sys, os, my_module
>>> isinstance(sys, ModuleClass)
True
>>> isinstance(os, ModuleClass)
True
>>> isinstance(my_module, ModuleClass)
True
>>> isinstance(5, ModuleClass)
False
Run Code Online (Sandbox Code Playgroud)
除了"ModuleClass"只是我发明的一个名字,我在文档中找不到它是否真的存在以及它叫什么.
是否有这样的课程?它是在我错过的文档中的某个地方吗?
如果没有,是否有另一种方法来查看对象是否是一个模块?如果它与实现无关,那就更好了.
(我正在使用Python 2.7,但我想知道3.x是否有一些新解决方案也很有趣.)
听起来像hasattr(obj, '__package__')(PEP 366)是一种可能的权宜之计,但是AFAICT并没有特别的理由确信未来的某些更新不会放入__package__其他一些完全不相关的对象中.我更喜欢一种感觉更强大的解决方案.
Ble*_*der 11
你可以使用inspect.ismodule:
>>> import inspect
>>> import os
>>> os2 = object()
>>> inspect.ismodule(os)
True
>>> inspect.ismodule(os2)
False
Run Code Online (Sandbox Code Playgroud)
kar*_*ikr 11
你可以做:
from types import ModuleType
print isinstance(obj, ModuleType)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |