Python Glossary English

Python 3.11+typingфункция

typing.dataclass_transform

декораторы и маркеры

Декоратор-маркер: сообщает средству проверки типов, что помеченная функция/класс порождает объекты в стиле dataclass (Python 3.11+).

Синтаксис

@typing.dataclass_transform()

У декоратора нет никакого рантайм-эффекта: он лишь проставляет метку, которую читает статический анализатор, — сам __init__ и прочие методы он не генерирует. Нужен авторам библиотек (attrs, pydantic, SQLAlchemy), чтобы их собственные декораторы и базовые классы проверяющий тип видел как обычные dataclass'ы; в прикладном коде почти не встречается.

Примеры

from typing import dataclass_transform
print(callable(dataclass_transform))   # → True
from typing import dataclass_transform
def model(cls): return cls   # «фабрика» в стиле dataclass
print(dataclass_transform()(model) is model)   # → True
model = dataclass_transform(order_default=True)(model); print(model.__dataclass_transform__['order_default'])   # → True
print(dataclass_transform(True))   # → TypeError

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности