2009-12-21 44 views
0

我正在動態生成類名,然後想通過其名稱導入該類來訪問靜態方法。按名稱動態導入靜態訪問類

這是「the_module.py」導入類:

class ToImport(object): 

    @classmethod 
    def initialize(cls, parameter): 
     print parameter 

根據Blog post這是據我走過來:

theModule = __import__("the_module") 
toImport = getattr(theModule, "ToImport") 
toImport.initialize("parameter") 

但博客例子似乎是不完整,因爲它給了我一個模塊對象,沒有我想要的類ToImport。查看__import__()documentation顯示了該函數有更多可選屬性。我成功了

theModule = __import__("the_module", globals(), locals(), ["ToImport"]) 

爲什麼我必須給fromlist屬性?我無法導入所有模塊屬性?

+0

哪個版本的py? – 2009-12-21 14:37:23

+0

使用Python 2.6.2 – desolat 2009-12-21 15:39:38

回答

2

我已經完成了你所做的事情,並且我找到了這門課。

In [1]: theModule = __import__("the_module") 

In [2]: toImport = getattr(theModule, "ToImport") 

In [3]: toImport.initialize("parameter") 
parameter 

我正在使用Python 2.6.4。你能否進一步解釋,什麼對你沒有用?

+1

也適用於我,在Python 2.6.2(Ubuntu)和Python 2.5.1(Mac)上測試過, – 2009-12-21 16:38:18