Вы правы. Обе схемы ведут себя одинаково.
Это можно рассматривать как избыточный API: из вашего примера вы можете задаться вопросом, почему attribute
, если data_key
обеспечивает такую же функциональность.
На практике полезно иметь и то и другое, поскольку оно позволяет указывать ключи, которые являются недопустимыми именами переменных python для ключей загрузки и дампа.
class MySchema(marshmallow.Schema):
foo = marshmallow.fields.String(attribute="bar-load", "data_key"="bar-dump")
AFAIK, это причина, по которой мы не понизили attribute
зефира. Могут быть и другие причины, но эта уже кажется хорошей.