根据官方的Marshmallow文档,建议声明一个Schema,然后有一个单独的类接收加载的数据,如下所示:
class UserSchema(Schema):
name = fields.Str()
email = fields.Email()
created_at = fields.DateTime()
@post_load
def make_user(self, data):
return User(**data)
Run Code Online (Sandbox Code Playgroud)
但是,我的User课程看起来像这样:
class User:
def __init__(name, email, created_at):
self.name = name
self.email = email
self.created_at = created_at
Run Code Online (Sandbox Code Playgroud)
这似乎不必要地重复我自己,我真的不喜欢不得不再写三次属性名称.但是,我确实喜欢IDE自动完成和静态类型检查明确定义的结构.
那么,有没有最佳实践根据Marshmallow模式加载序列化数据而不定义另一个类?