Куда вы помещаете декоратор после того, как написали его? - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь написать свой первый декоратор. Я видел много видео-уроков и постов в блогах об этом, но я не видел ничего о том, куда поместить декоратор, чтобы декорируемая функция могла его найти. Это кажется довольно простым, и, возможно, это «очевидно» для тех, кто делал это раньше, но я спрашиваю, поскольку это не я. Обратите внимание, я не спрашиваю, куда поместить @decorator. Я знаю, что это идет по линии над украшаемой функцией. Но сам декоратор должен быть написан и помещен где-нибудь, где синтаксис @ может найти и применить его. Все примеры, которые я видел, содержат их в одном и том же файле или скрипте, но я никогда не видел подобного декоратора на практике и не видел оператора импорта, который переносит его в приложение. Так, где это должно быть, и как украшенное приложение / python находит это?

Ответы [ 2 ]

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

Как вы, наверное, знаете, декоратор - это просто функция, как и любая другая функция. Таким образом, вы размещаете его так же, как и любую другую функцию

  1. В том же файле
  2. В другом файле. В этом случае вам также необходимо import функция
0 голосов
/ 07 мая 2018

Декоратор - это просто вызываемая функция, обычно функция. Это означает, что вы можете определить его в любом месте, где хотите использовать любую другую функцию, и импортировать его таким же образом.

from mydecorators import mydecorator

@mydecorator
def f():
    ...

Так как оформление класса или функции уровня модуля происходит во время импорта, имя должно быть разрешено до его использования. Это запрещает определять или импортировать декоратор после , используя его, что, как обычно, будет NameError исключением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...