gpt4 book ai didi

Python Tornado – 如何修复 'URLhandler takes exactly X arguments' 错误?

转载 作者:太空狗 更新时间:2023-10-30 01:59:26 27 4
gpt4 key购买 nike

这里是错误:

TypeError: __init__() takes exactly 1 argument (3 given)
ERROR:root:Exception in callback <tornado.stack_context._StackContextWrapper object at 0x1017d4470>
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/tornado-2.4.1-py2.7.egg/tornado/ioloop.py", line 421, in _run_callback
callback()
File "/Library/Python/2.7/site-packages/tornado-2.4.1-py2.7.egg/tornado/iostream.py", line 311, in wrapper
callback(*args)
File "/Library/Python/2.7/site-packages/tornado-2.4.1-py2.7.egg/tornado/httpserver.py", line 268, in _on_headers
self.request_callback(self._request)
File "/Library/Python/2.7/site-packages/tornado-2.4.1-py2.7.egg/tornado/web.py", line 1395, in __call__
handler = spec.handler_class(self, request, **spec.kwargs)
TypeError: __init__() takes exactly 1 argument (3 given)

代码如下:

class IndexHandler(tornado.web.RequestHandler):
def __init__(self):
self.title = "Welcome!"

def get(self):
self.render("index.html", title=self.title)

我已将代码简化为上面的代码,但我对为什么会产生该错误感到困惑。我一定是做错了什么,但我不知道是什么(通过了 3 个参数???...嗯?)

注:title变量仅仅是 <title>{{ title }}</title>在我的 index.html 模板中。

我正在运行 32 位版本的 Python 2.7.3,以便与 Mysqldb-Python 一起工作。如您所见,我的 Tornado 版本是 2.4.1。我也在 OSX Lion 上运行(如果这有什么不同......)可能是最终产生此错误的兼容性问题?

在调试时感谢所有帮助。谢谢你。

最佳答案

@Princess of the Universe 是对的,但也许这需要一些详细说明。

Tornado 将使用参数 application, request, **kwargsRequestHandler 子类上调用 __init__,因此您需要允许那个。

你可以这样做:

def __init__(self, application, request, **kwargs):
self.title = "Welcome!"
super(IndexHandler, self).__init__(application, request, **kwargs)

这意味着您的 IndexHandler 类现在已使用与父类相同的签名进行初始化。

但是,我更喜欢 Tornado 为此目的提供的 initialize 方法:

def initialize(self):
self.title = "Welcome!"

关于Python Tornado – 如何修复 'URLhandler takes exactly X arguments' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14907489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com