Python中使用setattr()为模块设置属性的惯用方式是什么?

4
在类方法中,我可以使用内置函数添加属性:
setattr(self, "var_name", value).  

如果我想在一个模块内做同样的事情,可以这样做:
globals()["var_name"] = value

这是最好的方法吗?还是有更符合Python风格的解决方案吗?


我相信第一种方式是最具Python风格的方式,尽管我不确定。 - Xavier Ho
1
可能是重复的问题:如何在当前模块上调用setattr()? - John Machin
1个回答

6
您提出的方法
globals()["var_name"] = value

确实是最符合Python风格的方式。具体而言,与使用eval相比,这种方法要显著更符合Python的风格(尽管不是唯一的替代方法)。

然而,如果你仍然想使用setattr,可以通过使用sys.modules来获取当前模块对象的引用,并使用当前模块的__name__变量(在这里解释)如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接