Подтвердить что ты не робот

Python - есть ли где-нибудь декораторы?

Я знаю @staticmethod, @classmethod и @property, но только через разрозненную документацию. Есть ли полный список декораторов функций, встроенных в Python?

4b9b3361

Ответ 1

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

Для поиска всех из них попробуйте найти Встроенные функции, потому что, как вы можете видеть в глоссарий Python синтаксис декоратора - это просто синтаксический сахар, поскольку следующие два определения создают равные функции (скопировали этот пример из глоссария):

def f(...):
    ...
f = staticmethod(f)

@staticmethod
def f(...):

Таким образом, любая декоративная функция, которая возвращает другую функцию, может использоваться в качестве декоратора. Вопрос: имеет ли смысл использовать его таким образом?: -)

functools модуль содержит некоторые функции, которые могут использоваться в качестве декораторов, но они не являются встроенными, которые вы просили.

Ответ 2

Они не встроены, но эта библиотека примеров декораторов, если они очень хороши.

Как говорит Abgan , встроенный список функций, вероятно, является лучшим местом для просмотра, хотя, поскольку декораторы также могут быть реализованы как классы, это не гарантируется всесторонним.

Ответ 3

Декораторы даже не обязаны возвращать функцию. Я использовал @atexit.register раньше.

Ответ 4

Нет такой вещи, как список всех декораторов. Нет списка всех функций. Нет списка всех классов.

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