在类方法中,我可以使用内置函数添加属性:
如果我想在一个模块内做同样的事情,可以这样做:
setattr(self, "var_name", value).
如果我想在一个模块内做同样的事情,可以这样做:
globals()["var_name"] = value
这是最好的方法吗?还是有更符合Python风格的解决方案吗?
setattr(self, "var_name", value).
globals()["var_name"] = value
这是最好的方法吗?还是有更符合Python风格的解决方案吗?
globals()["var_name"] = value
确实是最符合Python风格的方式。具体而言,与使用eval相比,这种方法要显著更符合Python的风格(尽管不是唯一的替代方法)。
然而,如果你仍然想使用setattr
,可以通过使用sys.modules来获取当前模块对象的引用,并使用当前模块的__name__
变量(在这里解释)如下:
import sys
setattr(sys.modules[__name__], "var_name", value)