Python棉花糖和PyCharm类型提示

uklbhaso  于 2022-11-08  发布在  PyCharm
关注(0)|答案(2)|浏览(196)

我对使用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要求太多了,或者我遗漏了什么?

yeotifhr

yeotifhr1#

只是为了后代,基于上面的答案以下允许这工作。

self.user: UserSchema = UserSchema().load({"name": "foo", "age": 42})

相关问题