Торнадо Python использует наследование с параметрами - PullRequest
0 голосов
/ 20 мая 2018

У меня есть базовый класс обработчика, подобный этому:

class BaseHandler(RequestHandler):
    def get(self, id=None, *args, **kwargs):
        module = self.request.uri.split('/')[1].split('?')[0]

этот обработчик метода get состоит из 100 строк кода, как вы можете видеть, модуль получен из URL.в некоторых случаях мне просто нужно изменить модуль, и я не хочу полностью переписывать метод get.
Есть ли способ унаследовать этот метод и изменить модуль?

1 Ответ

0 голосов
/ 20 мая 2018

Поскольку ваш get принимает **kwargs, вы можете добавить эту строку:

module = kwargs.pop("module") or self.request.uri.split('/')[1].split('?')[0]

Таким образом, вы можете наследовать этот метод в подклассе и изменить модуль:

module = ...
super(Subclass, self).get(id, *args, module=module, **kwargs)
...