在类方法中,我可以使用内置函数添加属性:
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)