模块的setattr()在Python中应该如何使用?
在一个类的方法里,我可以使用内置的函数来添加属性:
setattr(self, "var_name", value).
如果我想在一个模块里做同样的事情,我可以这样做:
globals()["var_name"] = value
这样做是最好的方法吗?还是有更符合Python风格的解决方案呢?
1 个回答
6
你建议的方法
globals()["var_name"] = value
确实是最符合Python风格的做法。特别是,它比使用eval要更符合Python的风格,而使用eval是你主要(但不是唯一)的替代选择。
不过,如果你还是想用setattr
,可以通过sys.modules来获取当前模块对象的引用,方法是使用当前模块的__name__
变量(这里有详细说明),具体做法如下:
import sys
setattr(sys.modules[__name__], "var_name", value)