python 棉花糖 : how to allow multiple Schemas to a Schema's field?

标签 python serialization polymorphism marshmallow

我想声明一个模式字段来接受不同的模式类型,但不是任何 .

Marshmallow 是否可能出现以下情况?

class SchemaA(Schema):
    name = String()

class SchemaB(Schema):
    name = String()
    age = Integer()

class SchemaC(Schema)
    one_of_many_but_not_any = [SchemaA(), SchemaB(), String()]  # <- !

最佳答案

您要实现的目标称为多态性。

marshmallow 尚不支持这一点,但这是一个反复出现的问题,我一直在使用 polymorphism 标记错误跟踪器中的所有相关问题。标签。

参见例如 https://github.com/marshmallow-code/marshmallow/issues/1255 .

目前有两个库添加了此支持:

  • marshmallow-oneofschema
  • marshmallow-polyfield

  • 他们都有自己的优点/缺点。

    关于 python 棉花糖 : how to allow multiple Schemas to a Schema's field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58480350/

    相关文章:

    clojure - clojure 中比使用实例更惯用的模式?按类型分派(dispatch)

    java - C++ 客户端与 Java 服务器之间的通信

    java - 防止特定字段的自定义序列化

    Java 泛型 : "Nested" type parameters?

    python - 无法设置属性和无限递归

    xml - 用于快速和肮脏的 XML 序列化的 Ruby 代码?

    C# - 在子类中调用个别行为后在抽象类中添加公共(public)行为

    python - django-avatar 的数据库错误

    python - 使用数组对象计算 Spark RDD 中的不同文本

    python - GBP/USD/EUR 的货币正则表达式