2010-06-02 35 views
4

在一個類的方法,我可以添加使用內置的功能屬性:對於模塊,setattr()的pythonic方法是什麼?

setattr(self, "var_name", value). 

如果我想做一個模塊內同樣的事情,我可以這樣做:

globals()["var_name"] = value 

這是做這件事的最好方式,還是有更多pythonic解決方案?

+0

我相信:

但是,如果你仍然想使用setattr,您可以通過使用sys.modules獲得與當前模塊的__name__變量(explained here)在當前模塊對象的引用如下這樣做第一種方法是最Pythonic的方式。雖然,我不確定。 – 2010-06-02 23:20:26

+1

可能的重複[如何在當前模塊上調用setattr()?](http://stackoverflow.com/questions/2933470/how-do-i-call-setattr-on-the-current-module) – 2010-06-02 23:44:16

回答

6

你的建議的方法

globals()["var_name"] = value 

的確是最Python的方式。特別是,它比使用eval更顯着的Pythonic,這將是您的主要(但不僅僅是)替代方案。

import sys 
setattr(sys.modules[__name__], "var_name", value) 
相關問題