我对使用python marshmallow
库进行数据序列化很感兴趣,但是我遇到了一个问题,当使用Schema.load
方法构造类时,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()
代码可以工作--意味着数据已经存在--但是PyCharm不能建议类属性。我是不是对PyCharm要求太多了,或者我遗漏了什么?
2条答案
按热度按时间yeotifhr1#
只是为了后代,基于上面的答案以下允许这工作。
ykejflvf2#
我认为您应该考虑改用marhsmallow-annotations https://marshmallow-annotations.readthedocs.io/en/latest/quickstart.html