Python继承混乱

时间:2014-09-21 16:37:35

标签: python oop python-2.7

我有一个类Query:

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)

我当然希望它能够按照“查询关键字关键字,参数{计数:120,年龄:100}”的方式返回一个对象。“我做错了什么?

1 个答案:

答案 0 :(得分: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)

<强>更新

如果您使用Python 2.x并且Query类ID为旧式类,请执行以下操作:

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