我对使用python marshmallow库进行数据序列化很感兴趣,但是我遇到了一个问题,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的要求是不是太高了,还是少了什么? 问题来源StackOverflow 地址:/questions/59385987/python-marshmallow-and-pycharm-type-hinting
只是为了子孙后代,基于以上的答案,下面的方法是可行的。
self.user: UserSchema = UserSchema().load({"name": "foo", "age": 42})
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。