我对使用python marshmallow
库进行数据序列化很感兴趣,但是在使用marshmallow
方法构造类时,PyCharm无法提供类属性,这给我带来了麻烦在示例中。
请考虑以下可能有人为的示例:
Schema.load
该代码有效-意味着数据在那里-但PyCharm无法建议类属性。我是否对此要求太多的PyCharm,或者我缺少什么?
仅出于后人的考虑,基于上面的回答,这使得它可行。
from marshmallow import Schema, post_load, fields
class User:
def __init__(self, name, age):
self.name = name
self.age = age
class UserSchema(Schema):
name = fields.String(required=True)
age = fields.Integer(required=True)
@post_load
def make_user(self, data, **kwargs):
return User(**data)
class UserHolder:
def __init__(self):
self.user = UserSchema().load({"name": "foo", "age": 42})
class UserHolderConsumer:
def __init__(self):
self.user_holder = UserHolder()
def get_user(self):
print("Name: {}; Age: {}".format(self.user_holder.user.name, self.user_holder.user.age))
if __name__ == "__main__":
UserHolderConsumer().get_user()