7
我有一个来自动态导入的子包的模块;我如何迭代它包含的类?迭代动态导入的模块中定义的类
我一直在进口模块和上市这样的名字:
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'>
UPDATE
看来我的班不在__dict__
除非fromlist
非空!尽管如此,from-list中的值似乎并未得到验证; [""]
似乎工作得很好,突然出现了班级!
任何人都可以解释为什么这是?
(标准的Debian蟒2.7.1+(R271:86832)
这是行不通的,除非导入有一个fromlist-clause;问题已经更新 – Will
哦,我认为你在一个try块中只能使用issubclass吗? – Will
(首先)你对fromlist有所了解:我通常使用'没有]'为此。不知道为什么它是必要的。(第二)没有,我的意思是'isinstance',而不是'issubclass',没有'try'。每个类也是'type'类型的对象。 – pvoosten