python * args和** kwargs从基类调用子类方法时遇到的问题

时间:2014-07-01 16:52:36

标签: python subclass args kwargs

当我想在基类中定义一个通用的run方法时遇到了一个问题,它在子类中调用一个方法。输出显示get_run_string中的kwargs似乎没有被调用它的方法中的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()

1 个答案:

答案 0 :(得分:4)

在奔跑中你必须使用

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

否则你只需传递给2个未命名的参数,并在args变量中查看它们。