我有一个来自动态导入的子包的模块;我如何遍历它包含的类?
我一直在导入模块并列出如下名称:
package = current_module.__name__
package = package[:package.rindex(".")] # get the package
package = "%s.sub.%s"%(package,name) # make the name of the child
print "(loading package %s)"%package
module = __import__(package) # this succeeds
for name,obj in inspect.getmembers(module):
print name,type(obj)
这只打印模块属性而不是模块定义的类类型:
__builtins__ <type 'dict'>
__doc__ <type 'NoneType'>
__file__ <type 'str'>
__name__ <type 'str'>
__package__ <type 'NoneType'>
__path__ <type 'list'>
imported_package <type 'module'>
看来我的课程不在 __dict__
除非 fromlist
是非空的!来自列表中的值似乎没有经过验证; [""]
似乎工作正常,突然出现了课程!
谁能解释这是为什么?
(标准 ubuntu python 2.7.1+ (r271:86832)
原文由 Will 发布,翻译遵循 CC BY-SA 4.0 许可协议
示例:创建一个将名称映射到类的字典:
其中 mod 是加载的模块