使用getattr分配属性

Alo*_*man 13 python getattr

我尝试为某些calss的属性赋值,如下所示:

for name in dir(modelType):
      if request.get(name):
            getattr(model, name) = request.get(name) 
Run Code Online (Sandbox Code Playgroud)

但得到的结论是:"无法分配给函数调用"

如何在编译时不知道它们的情况下更改属性?

pay*_*yne 19

您可以使用setattr()为属性分配值.

请参阅:http: //docs.python.org/library/functions.html#setattr

  • :-)从来没有在这里无聊. (2认同)

lun*_*chs 7

setattr(model, name, request.get(name))
Run Code Online (Sandbox Code Playgroud)

但我建议将请求数据保存在字典,专用类中或直接访问它 - 除非你正在进行特定的元编程/内省,否则setattr通常是错误的工具.