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