2017-01-16 110 views
1

我有'my_class'類放在'my_module'。我需要導入這個功能。我試着這樣做:從模塊動態導入類

import importlib 
result = importlib.import_module('my_module.my_class') 

但它說:

ImportError: No module named 'my_module.my_class'; 'my_module' is not a package 

所以。正如我可以看到它只適用於模塊,但無法處理類。我怎樣才能做到這一點?

回答

3

期待my_module是一個包含名爲'my_class'的模塊的包。如果您需要導入類,或者更一般地,一個屬性動態,只需使用getattr導入模塊後:

cls = getattr(import_module('my_module'), 'my_class') 

而且,是的,它只能使用模塊。請記住importlib.import_module是內部importlib.__import__函數的包裝。它不提供與完整的import語句相同數量的功能,該語句與from一起在導入的模塊上執行屬性查找。