什么是setattr()用于模块的pythonic方法?

时间:2010-06-02 23:11:06

标签: python attributes module

在类方法中,我可以使用内置函数添加属性:

setattr(self, "var_name", value).  

如果我想在模块中做同样的事情,我可以做类似的事情:

globals()["var_name"] = value

这是最好的方法吗,还是有更多的pythonic解决方案?

1 个答案:

答案 0 :(得分:6)

您建议的方法

globals()["var_name"] = value

确实是最恐怖的方式。特别是,它比使用eval更加Pythonic,这将是你的主要(但不仅仅是)替代品。

但是,如果您仍想使用setattr,则可以使用sys.modules使用当前模块的__name__变量({{}来获取对当前模块对象的引用。 3}})如下:

import sys
setattr(sys.modules[__name__], "var_name", value)