Python 继承webapp2谷歌应用引擎错误

Python 继承webapp2谷歌应用引擎错误,python,google-app-engine,Python,Google App Engine,您好,我在google Appengine中有以下代码。当调用get of Rot13时,我得到以下错误: handler=self.handler(请求、响应) 类型错误:init()接受 正好1个参数(给出3个) 在BaseHandler中,除非您接受它的所有参数并调用super,否则您无法超越RequestHandler的\uuuuu init\uuuu处理程序。只是盲目地重写\uuuu init\uuuu方法,而不研究它在父类中的作用,这会导致问题——因此你的问题 webapp2的Req

您好,我在google Appengine中有以下代码。当调用get of Rot13时,我得到以下错误:

handler=self.handler(请求、响应)

类型错误:init()接受 正好1个参数(给出3个)


BaseHandler
中,除非您接受它的所有参数并调用super,否则您无法超越
RequestHandler
\uuuuu init\uuuu处理程序。只是盲目地重写\uuuu init\uuuu方法,而不研究它在父类中的作用,这会导致问题——因此你的问题

webapp2的RequestHandler已记录在案

具体地说,它是
类webapp2.RequestHandler(request=None,response=None)

因此,Rot13中重写BaseHandler的init方法应该如下所示

def __init__(self,request,response):
    super(Rot23,self).__init__(request,response)
    # more stuff here.

BaseHandler
中,除非您接受它的所有参数并调用super,否则您无法超越
RequestHandler
\uuuuu init\uuuu处理程序。只是盲目地重写\uuuu init\uuuu方法,而不研究它在父类中的作用,这会导致问题——因此你的问题

webapp2的RequestHandler已记录在案

具体地说,它是
类webapp2.RequestHandler(request=None,response=None)

因此,Rot13中重写BaseHandler的init方法应该如下所示

def __init__(self,request,response):
    super(Rot23,self).__init__(request,response)
    # more stuff here.

如图所示,它有两个参数:请求和响应。您的
\uuuu init\uuuu
也需要接受它们,或者更好地接受
*args、**kwargs
,并将它们传递到超类。

如图所示,它需要两个参数:请求和响应。您的
\uuuu init\uuuu
也需要接受它们,或者更好地接受
*args、**kwargs
,并将它们传递到超类。

问题在于no\u caches()函数

def no_caches(self):
    self.response.headers["Pragma"]="no-cache"
    self.response.headers["Cache-Control"]="no-cache, no-store, must-revalidate,  pre-check=0, post-check=0"
    self.response.headers["Expires"]="Thu, 01 Dec 1994 16:00:00"
输入多个标题时,请改用addheaders(字段、值)


问题在于no_caches()函数

def no_caches(self):
    self.response.headers["Pragma"]="no-cache"
    self.response.headers["Cache-Control"]="no-cache, no-store, must-revalidate,  pre-check=0, post-check=0"
    self.response.headers["Expires"]="Thu, 01 Dec 1994 16:00:00"
输入多个标题时,请改用addheaders(字段、值)


否问题是OP覆盖了init,并且从未在父级调用它,并且没有接受正确数量的参数。否问题是OP覆盖了init,并且从未在父级调用它,并且没有接受正确数量的参数。谢谢。两个答案都是正确的。如果我希望Rot13始终实现每当Rot13被调用时,BaseHandler有没有更好的方法?谢谢。两个答案都是正确的。如果我希望Rot13总是在Rot13被调用时实现BaseHandler的无缓存,有没有更好的方法?