Joh*_*der 4 python attributes module
在类方法中,我可以使用内置函数添加属性:
setattr(self, "var_name", value).
Run Code Online (Sandbox Code Playgroud)
如果我想在模块中做同样的事情,我可以做类似的事情:
globals()["var_name"] = value
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗,还是有更多的pythonic解决方案?
你建议的方法
globals()["var_name"] = value
Run Code Online (Sandbox Code Playgroud)
确实是最恐怖的方式.特别是,它比使用eval更加Pythonic ,这将是你的主要(但不仅仅是)替代方案.
但是,如果您仍想使用setattr,可以使用sys.modules来获取对当前模块对象的引用以及当前模块的__name__变量(在此处说明),如下所示:
import sys
setattr(sys.modules[__name__], "var_name", value)
Run Code Online (Sandbox Code Playgroud)