2014-07-01 74 views
0

當我想要在基類中定義一個通用運行方法時,遇到了一個問題,該方法在子類中調用方法。輸出顯示get_run_string中的kwargs似乎沒有在調用它的方法中由kwargs正確分配。 我的代碼有什麼問題嗎?謝謝。從基類中調用子類方法時,python * args和** kwargs問題

class Runnable(object): 
    def __init__(self): 
     #self.computer=ComputingHost() 
     pass 
    def run(self,*args,**kwargs): 
     cmd=self.get_run_string(args,kwargs) 
     print kwargs 
     #return cmd 

def test_runnable(): 
    class Testr(Runnable): 
     def __init__(self): 
      super(Testr,self).__init__() 
     def get_run_string(self,*args,**kwargs): 
      print "in getrunstring ",args 
      print "in getrunstring ",kwargs 
      return 0 
    a=Testr() 
    a.run(x="aa",y="bb") 

test_runnable() 
+0

預期產量是多少?你會得到什麼輸出? – wastl

回答

4

在運行,你必須使用

cmd=self.get_run_string(*args, **kwargs)

否則,您只需傳遞給2個未命名的參數,並在args變量中查看它們兩個。

+0

是的。我發現操作符*和**簡單地將列表和字典數據類型分解到其上下文中,這對於理解它們是否正確? – Indicator

+0

是的,這是正確的。 –

相關問題