如何在python中更改父类函数返回的值

时间:2012-11-09 07:37:36

标签: python django

我有这段代码

class Mother:
        def getList()
            data['list'] = [2,3,4,5]
            data = json.dumps(data)
            return HttpResponse(data, mimetype='application/json', status=200)



class Child(Mother)
      def getList()
          /////////

在新函数中我想获取列表并进行一些修改,例如减去一些               其他列表和resturn相同的jsonresponse

我该怎么做

1 个答案:

答案 0 :(得分:2)

您必须从响应返回部分中抽象出代码的列表生成部分。

来自母亲的这段代码,虽然不完全无效,但不是可行的代码:

return HttpResponse(data, mimetype='application/json', status=200)
return list

在第一个return语句之后,Python不再执行该方法,因此第二个返回将永远不会运行。

尝试将其拆分:

class Mother(object):
    def makeList(self)
        data['list'] = [2,3,4,5]
        data = json.dumps(data)
        return data

    def getList(self)
        data = self.makeList()
        return HttpResponse(data, mimetype='application/json', status=200)

class Child(Mother)
  def makeList(self)
      my_list = super(Child, self).makeList()
      # do something to it
      return my_list

现在在Mother对象上有一个makeList方法,它构造了实际的列表,而getList只是将它格式化为一个HttpResponse对象。

在Child中,makeList被覆盖,但从母亲调用版本开始。之后,您可以进行所需的任何修改,并将其返回。当您调用child.getList()时,它将使用该新列表,然后将其呈现给HttpResponse,因为它从母亲继承getList