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Сообщить о неточности