Я знаю @staticmethod, @classmethod и @property, но только через разрозненную документацию. Есть ли полный список декораторов функций, встроенных в Python?
Python - есть ли где-нибудь декораторы?
Ответ 1
Я так не думаю. Декораторы не отличаются от обычных функций, вы вызываете их только по-любимому.
Для поиска всех из них попробуйте найти Встроенные функции, потому что, как вы можете видеть в глоссарий Python синтаксис декоратора - это просто синтаксический сахар, поскольку следующие два определения создают равные функции (скопировали этот пример из глоссария):
def f(...):
...
f = staticmethod(f)
@staticmethod
def f(...):
Таким образом, любая декоративная функция, которая возвращает другую функцию, может использоваться в качестве декоратора. Вопрос: имеет ли смысл использовать его таким образом?: -)
functools модуль содержит некоторые функции, которые могут использоваться в качестве декораторов, но они не являются встроенными, которые вы просили.
Ответ 2
Они не встроены, но эта библиотека примеров декораторов, если они очень хороши.
Как говорит Abgan , встроенный список функций, вероятно, является лучшим местом для просмотра, хотя, поскольку декораторы также могут быть реализованы как классы, это не гарантируется всесторонним.
Ответ 3
Декораторы даже не обязаны возвращать функцию. Я использовал @atexit.register
раньше.
Ответ 4
Нет такой вещи, как список всех декораторов. Нет списка всех функций. Нет списка всех классов.
Декораторы - это удобный инструмент для определения общего аспекта функций, методов или классов. Есть встроенные декораторы. Кроме того, есть множество прохладных и бесполезных декораторов. Точно так же существует любое количество классных и бесполезных классов.