我正在使用Tornado构建一个Web服务器。我需要将不同的请求分派到同一个类中。这是一个例子:
application.add_handlers(r"^(example).*", [
(r"/(mark)/(auth)"), MarkHandler,
(r"/(mark)"), MarkHandler,
])
班级MarkHandler
:
class MarkHandler(tornado.web.RequestHandler):
def get(self, mark): # /(mark)
print('1111')
def get(self, mark, auth): # /(mark)/(auth)
print('2222')
然而,它似乎不起作用...
当我访问链接:www.example.com/mark
时,服务器给出了一个错误:
TypeError:get()缺少1个必需的位置参数:'auth'
我上面所需要的是不可能的?
答案 0 :(得分:0)
Python不允许方法重载C ++或Java的方式。在Python中定义相同的方法get
只需用第二个方法覆盖第一个方法。
相反,您需要第二个参数的默认值:
class MarkHandler(tornado.web.RequestHandler):
def get(self, mark, auth=None):
if auth is not None:
print('2222')
else:
print('1111')