代码之家  ›  专栏  ›  技术社区  ›  John Mulder

什么是模块setattr()的pythonic方法?

  •  4
  • John Mulder  · 技术社区  · 15 年前

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

    setattr(self, "var_name", value).  
    

    如果我想在一个模块中做同样的事情,我可以这样做:

    globals()["var_name"] = value
    

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

    1 回复  |  直到 15 年前
        1
  •  6
  •   Eli Courtwright    15 年前

    你建议的方法

    globals()["var_name"] = value
    

    的确是最具蟒蛇的方式。特别是,它明显比使用 eval ,这将是你的主要(尽管不是唯一)选择。

    但是,如果你还想用 setattr ,您可以使用 sys.modules 使用当前模块的 __name__ 变量( explained here )具体如下:

    import sys
    setattr(sys.modules[__name__], "var_name", value)
    
    推荐文章