如何在python中重构switch case语句?

use*_*818 1 python google-app-engine

此代码是Google应用引擎网络应用的一部分.任何关于打击代码的重构思想?

def post(self):
    user = User.all().filter("id =",self.request.get('id')).get()
    for arg in self.request.arguments():
        if arg == 'name':
            user.name = self.request.get(arg)
        elif arg == 'sex':
            user.sex = self.request.get(arg)
        elif arg == 'age':
            user.age = self.request.get(arg)
        elif arg == 'interest':
            user.interest = self.request.get(arg)
        elif arg == 'location':
            user.location = self.request.get(arg)
        elif arg == 'latitude':
            user.latitude = self.request.get(arg)
        elif arg == 'longitude':
            user.longitude = self.request.get(arg)
    user.put()
    response_out_update(self, "true")
Run Code Online (Sandbox Code Playgroud)

Ste*_*sop 8

valid_args = set(('name', 'sex', 'age', 'interest', 'location', 'latitude', 'longitude'))

for arg in self.request.arguments():
    if arg in valid_args:
        setattr(user, arg, self.request.get(arg))
Run Code Online (Sandbox Code Playgroud)

可能有User对象的属性,您不希望应用程序用户只需通过制作适当的POST请求来修改.即使这个处理程序仅限于管理员而且具有针对CSRF的保护,但在提供它不需要的功能方面没有明显的好处,因此最多永远不会使用,最坏的情况是有人会弄清楚如何滥用.