2013-10-07 69 views
0

我有一個現有的簡單的導入語句如下:重寫使用import_module

from booking import Booking 

,我想重寫通過importlib庫接受動態paramters。

我嘗試過的以下不同:

from importlib import import_module 

mymodule = import_module("Booking", "booking") 

所有引發異常:

ImportError: No module named Booking

+0

'booking'是一個包還是簡單模塊? –

+0

「預訂」是一堂課嗎? – Milo

+0

'booking'是一個包,'Booking'是一個類 –

回答

3

我用這個函數從模塊動態導入類:

def import_class(modulename, classname): 
    ''' Returns imported class. ''' 
    try: 
     return getattr(__import__(modulename, globals(), locals(), [classname], -1), classname) 
    except AttributeError: 
     print 'Error in importing class. "%s" has no class "%s"' % (modulename, classname) 
     return None 
    except ImportError as e: 
     print 'Error in importing class: %s' % (e) 
     return None 
+0

謝謝@Milo。因此,我的實現變成了:'mymodule = import_class(「booking」,「Booking」)',我相信這會在很多項目中使用! –