🔖 Справочник команд и синтаксиса

⚡ Краткий справочник

  • @decorator — синтаксический сахар для func = decorator(func).
  • *args, **kwargs — универсальный способ принять любые аргументы.
  • @functools.wraps(func) — сохраняет __name__, __doc__ и другие атрибуты.
  • def factory(param): def decorator(func): ... return decorator — декоратор с параметрами.
  • class ClassName: — объявление класса.
  • def __init__(self, ...): — инициализация полей.
  • self.field — поле объекта.
  • object.method() — вызов метода.

Синтаксис декораторов

ЗаписьНазначениеПример
@decoratorПрименить декоратор к функции@log
def f(): ...
*argsПозиционные аргументы произвольной длиныdef wrapper(*args): ...
**kwargsИменованные аргументы произвольной длиныdef wrapper(**kwargs): ...
*args, **kwargsЛюбые аргументыdef wrapper(*args, **kwargs): ...
return func(*args, **kwargs)Вызвать оригинал и вернуть результатreturn func(*args, **kwargs)

functools.wraps

ЗаписьНазначениеПример
@functools.wraps(func)Сохраняет метаданные декорируемой функции@functools.wraps(func)
def wrapper(...): ...
func.__name__Имя функции'add'
func.__doc__Строка документации'Add two numbers.'

Декоратор-фабрика

ЗаписьНазначениеПример
def factory(param):Принимает параметры декоратораdef retry(attempts):
def decorator(func):Возвращает декораторdef decorator(func):
def wrapper(...):Оборачивает вызовdef wrapper(*args, **kwargs):
return wrapperВозвращает обёрткувнутри decorator
return decoratorВозвращает сам декораторвнутри factory

Классы и объекты

ЗаписьНазначениеПример
class ClassName:Объявление классаclass Book:
def __init__(self, ...):Инициализатор объектаdef __init__(self, title):
self.field = valueСоздание поля объектаself.title = title
obj = ClassName(...)Создание объектаbook = Book("1984")
obj.fieldДоступ к полюbook.title
obj.method()Вызов методаbook.show_info()

Ключевые слова и атрибуты

ЭлементОписаниеПример
selfПервый параметр метода, ссылка на объектdef show(self): ...
__init__Инициализаторdef __init__(self):
__new__Конструктор объектавызывается автоматически
__name__Имя функции/классаfunc.__name__
__doc__Документацияfunc.__doc__

Правила использования

  • Обёртка декоратора должна принимать и возвращать результат, если это нужно для прозрачности.
  • Используйте @functools.wraps, чтобы не терять метаданные.
  • Декораторы применяются снизу вверх; порядок важен.
  • Имена классов пишите в CamelCase.
  • Первый параметр метода — self.
  • Поля объекта создавайте через self.field, иначе они не сохранятся.
  • Для создания объекта обязательно вызывайте класс со скобками.
Проверить по документации: полный список функций functools и особенности определения классов — в документации functools и Tutorial: Classes.