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

setattr(self, "var_name", value).

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

这是最好的方法吗,还是有一个更蟒蛇的解决方案?

最佳答案

你建议的方法

globals()["var_name"] = value

确实是最变态的方式。尤其是,它明显比使用eval更具蟒蛇性,这将是您的主要(尽管不是唯一)选择。
但是,如果仍要使用setattr,则可以使用sys.modules获取对当前模块对象的引用,其中包含当前模块的__name__变量(explained here),如下所示:
import sys
setattr(sys.modules[__name__], "var_name", value)

07-27 19:31