docs Nach dem offiziellen Eibisch zu wiederholen, ist es empfehlenswert, ein Schema zu erklären und dann eine separate Klasse, die Daten, wie diese geladen empfängt:Eibisch Verwendung ohne mich
class UserSchema(Schema):
name = fields.Str()
email = fields.Email()
created_at = fields.DateTime()
@post_load
def make_user(self, data):
return User(**data)
jedoch meine User
Klasse würde in etwa so aussehen:
class User:
def __init__(name, email, created_at):
self.name = name
self.email = email
self.created_at = created_at
Dies scheint mich unnötig zu wiederholen und ich habe nicht wirklich wie die Attributnamen zu schreiben, drei weitere Male. Ich mag jedoch IDE-Autokomplettierung und statische Typprüfung auf wohldefinierten Strukturen.
Gibt es also eine Best Practice zum Laden von serialisierten Daten nach einem Marshmallow-Schema, ohne eine andere Klasse zu definieren?
die Klasse definiert mit 'setattr' mich daran hindert, Validierungsregeln spezifizieren, die ist der Grund, warum ich mich mit Marshmallow beschäftige. Ich könnte ein 'collections.namedtuple' verwenden, aber das scheint ziemlich plump zu sein, wenn verschachtelte Schemas beteiligt sind. – Teyras
@Teyras In solchen Fällen müssen Sie die Felder wiederholen. Die Dokumentation macht das explizit. –