2017-08-23 19 views
0

私はTornadoを使ってWebサーバーを構築しています。私は別の要求を同じクラスにディスパッチする必要があります。次に例を示します。
Tornado:同じクラスに異なるリクエストを送信する方法

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() missing 1 required positional argument: 'auth'

上記は不可能ですか?

答えて

0

Pythonでは、C++やJavaのやり方によるメソッドのオーバーロードは許可されていません。 Pythonで同じメソッドgetを2回定義すると、最初のメソッドが2番目のメソッドで上書きされます。

代わりに、2番目の引数のデフォルト値とします

class MarkHandler(tornado.web.RequestHandler): 
    def get(self, mark, auth=None): 
     if auth is not None: 
      print('2222') 
     else: 
      print('1111') 
関連する問題