2014-09-21 113 views
-2

我有一个类查询:Python的继承混乱

class Query 
    def __init__(self, keyword, **kwargs): 
     self.keyword = keyword 
     self.parameters = kwargs 

    def __repr__(self): 
     return "Query keyword %s, params %s" % (self.keyword, self.parameters) 

好为止。现在,我创建了一个从它继承的类:

class SimpleQuery(Query): 
    def __init__(self, keyword, count, age): 
     Query(keyword, count, age) 

如果我创建一个实例,我得到...

>>> m = SimpleQuery(keyword, count=120, age=100) 
TypeError: __init__() takes exactly 2 arguments (4 given) 

我所期待的,当然是它返回一个对象沿着“查询关键字关键字,params {count:120,age:100}”行。我究竟做错了什么?

+0

可能的重复[从Python中的子类调用父类的方法?](http://stackoverflow.com/questions/805066/call-a-parent-classs-method-from-child-class-in- python) – simonzack 2014-09-21 16:40:24

回答

3

要调用父类方法:

class SimpleQuery(Query): 
    def __init__(self, keyword, count, age): 
     super(SimpleQuery, self).__init__(keyword, count=count, age=age) 

如果您使用Python 3.x的:

class SimpleQuery(Query): 
    def __init__(self, keyword, count, age): 
     super().__init__(keyword, count=count, age=age) 

UPDATE

如果您使用Python 2.x和如果Query类编号老式班,做如下:

class SimpleQuery(Query): 
    def __init__(self, keyword, count, age): 
     Query.__init__(self, keyword, count=count, age=age) 
+0

奇怪的是,这给了我'必须是类型的,而不是classobj' ... – 2014-09-21 16:48:15

+0

谢谢!解决了它! – 2014-09-21 16:52:48