Python继承混乱

2024-04-26 20:36:09 发布

您现在位置: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)

当然,我所期望的是它返回一个“Query keyword,params{count:120,age:100}”行的对象


Tags: 实例selfagereturninitdefcountparams
1条回答
网友
1楼 · 发布于 2024-04-26 20:36:09

调用超类方法:

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)

更新

如果使用Python2.x并且Query类id是旧样式类,请执行以下操作:

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

相关问题 更多 >