2013-05-04 38 views
0

我正在發送帶有包含字符串的「data」字段的ajax請求,以及用戶設置的多個選項。每個選項都將「啓用」或「禁用」,並將啓用或禁用課程中的功能。我想知道的是,如果組織此代碼的更好方法不涉及調用每個函數並檢查它是啓用還是禁用?使用啓用/禁用選項排序多個函數

class Parse(webapp2.RequestHandler): 
    def post(self): 
     data = self.request.get("data") 
     func1_option = self.request.get("func1_option") 
     func2_option = self.request.get("func2_option") 
     func3_option = self.request.get("func3_option") 

     newData = func1(func2(func3(data))) 
     self.response.write(newData) 

     def func1(foo): 
      if funct1_option = "disabled": 
       return foo 
      else: 
       return some.function(foo) 

     def func2(foo): 
      if funct2_option = "disabled": 
       return foo 
      else: 
       return some.function(foo) 

     def func3(foo): 
      if funct3_option = "disabled": 
       return foo 
      else: 
       return some.function(foo) 

回答

1
class Parse(webapp2.RequestHandler): 
    def post(self): 
     data = self.request.get("data") 

     # Note - order reversed 
     funcs = [ 
      ("func3_option", some.other_other_function), 
      ("func2_option", some.other_function), 
      ("func1_option", some.function) 
     ] 
     for opt_name, func in funcs: 
      if self.request.get(opt_name) != "disabled": 
       data = func(data) 

     self.response.write(data) 
+0

輝煌和簡單。謝謝。 – jumbopap 2013-05-05 04:46:25