检查marshmallow.Schema.dump()中的额外键

2024-10-03 11:25:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够获取一些Python对象(更准确地说,是一个dataclass),并使用模式将其转储到它的dict表示中。让我举个例子:

from marshmallow import Schema, field
import dataclasses

@dataclasses.dataclass
class Foo:
    x: int
    y: int
    z: int

class FooSchema(Schema):
    x = field.Int()
    y = field.Int()

FooSchema().dump(Foo(1,2,3))

如您所见,模式与Foo定义不同。我希望在转储时能够以某种方式识别它-因此我会得到一些ValidationError,并解释有一个额外的字段z。它不一定非得是.dump(),我看了.load().validate(),但只有前者似乎接受对象,而不仅仅是dict

有没有办法在棉花糖中做到这一点?因为现在当我做这个转储时,我只会得到一个字典:{"x": 1, "y": 2}当然没有z,但是没有任何错误。我希望在转储对象中没有键(比如z在模式中,但不在Foo)的情况下也有同样的行为。这个世界基本上是作为对类本身所做更改的一个健全检查——也许如果在棉花糖中不可能,你知道一些库/技术可以做到这一点吗


Tags: 对象importfieldfooschema模式dumpdict