2016-06-25 1 views
1

У меня есть базовый класс, который я сделал абстрактным.Заказ декоратора для абстрактного метода

class X(metaclass=ABCMeta): 

    @abstractmethod 
    @tornado.gen.coroutine 
    def cc(self): 
     # do stuff 

Что должен сделать заказ декораторов? И это имеет значение?

+0

См. Также http://stackoverflow.com/q/37995862/3001761, http://stackoverflow.com/q/27342149/3001761 – jonrsharpe

ответ

2

Порядок сложенных функции декораторы обычно имеет значение для правильной интерпретации (на основе потока вашей программы), и в этом случае указывается в явном виде в the docs:

Когда abstractmethod() применяется в комбинации с другие дескрипторы метода, его следует применять в качестве самого внутреннего декоратора ...

Так что в вашем случае вы должны поменять порядок, чтобы сделать его самым внутренним декоратором.

class X(metaclass=ABCMeta): 

    @tornado.gen.coroutine 
    @abstractmethod 
    def cc(self): 
     # do stuff 

 Смежные вопросы

  • Нет связанных вопросов^_^