Selon les docs Guimauve officiels, il est recommandé de déclarer un schéma et une classe distincte qui reçoit les données chargées, comme ceci:En utilisant Marshmallow sans me répéter
class UserSchema(Schema):
name = fields.Str()
email = fields.Email()
created_at = fields.DateTime()
@post_load
def make_user(self, data):
return User(**data)
Cependant, ma User
classe serait ressembler à quelque chose comme ceci:
class User:
def __init__(name, email, created_at):
self.name = name
self.email = email
self.created_at = created_at
cela semble me répéter inutilement et je n'aime vraiment pas avoir à écrire les noms d'attributs plus de trois fois. Cependant, j'aime bien l'auto-complétion de l'IDE et la vérification de type statique sur des structures bien définies.
Donc, y a-t-il une meilleure pratique pour charger des données sérialisées selon un schéma de guimauve sans définir une autre classe?
Définition de la classe 'setattr' me empêche de définir des règles de validation, qui C'est la raison pour laquelle je m'embête avec Marshmallow après tout. Je pourrais utiliser un 'collections.namedtuple', mais cela semble plutôt maladroit quand les schémas imbriqués sont impliqués. – Teyras
@Teyras Pour de tels cas, je suppose que vous devrez répéter les champs. Les docs le font explicitement. –