龙卷风:如何将不同的请求分派给同一个班级

时间:2017-08-23 09:59:45

标签: tornado

我正在使用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'

我上面所需要的是不可能的?

1 个答案:

答案 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')