Pydantic - 动态创建具有多个基类的模型?

2024-01-12

来自pydantic 文档 https://pydantic-docs.helpmanual.io/usage/models/我的理解是:

import pydantic

class User(pydantic.BaseModel):
    id: int
    name: str

class Student(pydantic.BaseModel):
    semester: int

# this works as expected
class Student_User(User, Student):
    building: str

print(Student_User.__fields__.keys())
#> dict_keys(['semester', 'id', 'name', 'building'])

但是,当我想动态创建一个类似的对象时(下面的部分动态模型创建 https://pydantic-docs.helpmanual.io/usage/models/#dynamic-model-creation):

# this results in a TypeError
pydantic.create_model("Student_User2", __base__=(User, Student))

I get:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

问题:如何动态创建一个类Student_User


这不是原始问题的答案,但如果您像我一样并且您关心的只是拥有一个包含其他模型字段的模型,那么这应该是一个解决方案。

Student_User = pydantic.create_model("Student_User", **{
    **{key: (value.type_, value.default) for key, value in User.__fields__.items()},
    **{key: (value.type_, value.default) for key, value in Student.__fields__.items()},
    **{"building": (str, '')},
})

本质上,我们正在动态创建一个新的 pydantic 模型,并将其字段设置为其他模型的字段加上一个额外的自定义字段。

笔记: OP 在他的问题中包含了这些行:

print(Student_User.__fields__.keys())
#> dict_keys(['semester', 'id', 'name', 'building'])

所以,我的猜测是,他的最终目标是复制其他模型中的字段,并且从多个基础创建模型只是实现它的一种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pydantic - 动态创建具有多个基类的模型? 的相关文章

  • PyQt:如何通过匿名代理使用网页

    这真让我抓狂 我想在 QWebPage 中显示一个 url 但我想通过匿名代理来实现 Code setting up the proxy proxy QNetworkProxy proxy setHostName 189 75 98 199
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • Jupyter Notebooks 不显示进度条

    我正在尝试在 Jupyter 笔记本中显示进度条 这是一台新电脑 我通常做的事情似乎不起作用 from tqdm import tqdm notebook example iter 1 2 3 4 5 for rec in tqdm not
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • 如何使用显式引用转储 YAML?

    递归引用非常适合ruamel yaml or pyyaml ruamel yaml dump ruamel yaml load A A id001 id001 然而 它 显然 不适用于普通引用 ruamel yaml dump ruamel
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 了解 Python 中的酸洗

    我最近接到一项作业 需要以腌制形式放置一本字典 其中每个键引用一个列表 唯一的问题是我不知道腌制形式是什么 谁能给我指出一些好的资源的正确方向来帮助我学习这个概念 pickle 模块实现了一个基本但强大的算法 用于序列化和反序列化 Pyth
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • 乘以行并按单元格值附加到数据框

    考虑以下数据框 df pd DataFrame X a b c d Y a b d e Z a b c d 1 2 1 3 df 我想在 列中附加数字大于 1 的行 并在该行中的数字减 1 df 最好应该 然后看起来像这样 或者它可能看起来
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 检测 IDLE 的存在/如何判断 __file__ 是否未设置

    我有一个脚本需要使用 file 所以我了解到 IDLE 没有设置这个 有没有办法从我的脚本中检测到 IDLE 的存在 if file not in globals file is not set 如果你想做一些特别的事情 file 未设置
  • 对数据帧的每 2 小时数据进行 Groupby

    我有一个数据框 Time T201FN1ST2010 T201FN1VT2010 1791 2017 12 26 00 00 00 854 69 0 87 1792 2017 12 26 00 20 00 855 76 0 87 1793
  • 为什么 smtplib.SMTP().sendmail 不发送 DKIM 签名邮件

    我已经在服务器上设置了 postfix 以及 openDKIM 当我跑步时 echo Testing setup mail s Postfix test my email address 我收到电子邮件 邮件标题中有一个DKIM Signa
  • Python 通过从现有 csv 文件中过滤选定的行来写入新的 csv 文件

    只是一个问题 我试图将 csv 文件中的选定行写入新的 csv 文件 但出现错误 我试图读取的 test csv 文件是这样的 两列 2013 9 1 2013 10 2 2013 11 3 2013 12 4 2014 1 5 2014
  • Python:高精度time.sleep

    你能告诉我如何在 Win32 和 Linux 上的 Python 2 6 中获得高精度睡眠函数吗 您可以在中使用浮点数sleep http docs python org library time html time sleep 该参数可以

随机推荐

  • 如何按 MAX(日期) 进行选择?

    这是表结构 CREATE TABLE reports report id int 11 NOT NULL auto increment computer id int 11 NOT NULL default 0 date entered d
  • 在处理网络连接时有没有办法利用多核?

    当我们进行网络编程时 无论使用多进程 多线程还是select poll epoll 都只有一个进程 线程来处理同一端口上的连接 如果你想利用多核 你需要创建工作进程 线程 但是处理网络连接的界限又如何呢 在处理网络连接时有没有办法利用多核
  • 如何限制网站的某个部分,使其一次只能由一台计算机查看? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 创建控制器时,调用目标引发了异常

    我是 ASP NET MVC 5 的初学者 正在构建一个小型应用程序 当我添加控制器时 弹出一条消息 运行所选代码生成器时出错 调用目标已引发异常 在添加控制器之前 我在 Web Config 文件中添加了一个连接字符串 请告诉我如何解决这
  • 如何使用SQL组过滤具有最大日期值的行

    我有下表 CREATE TABLE Test Id int value varchar 20 adate varchar 20 INSERT INTO Test Id value adate VALUES 1 100 2014 01 01
  • 从程序文件访问时文件访问被拒绝

    我有一个用 VS 2010 和 C 开发的小型 Winform 应用程序 并创建了设置 我已将应用程序配置文件放入应用程序文件夹路径中以保存用户凭据 安装后应用程序无法访问配置文件 因为我给定了程序安装默认路径 如下所示 ProgramFi
  • 将数组作为 x-www-form-urlencoded 的一部分发送

    I want to send array using postman the request looks like this Im using postman to execute requests I found on the inter
  • 如何通知另一个线程

    我想知道如何通知另一个线程的最佳方式 例如 我有一个后台线程 public void StartBackgroundThread new Thread new Runnable Override public void run Do som
  • 自定义 jQuery 下拉菜单

    我正在使用 jQuery 创建一个自定义的简单下拉菜单 该下拉菜单根据过度状态隐藏 显示元素 我现在遇到的问题是 当您查看它隐藏的显示元素时 您无法将鼠标移动到创建的下拉列表中 关于如何解决这个问题还有什么想法 有没有更简单的方法来做我所拥
  • 使用 Qt 设计应用程序

    我必须实现图形用户界面设计 选择的框架是Qt 经过一些实施工作后 出现了一些困难和问题 主要的一点是有一些花哨的设计元素 比如渐变 3D效果 阴影等等 目前使用的方法 我真的不太喜欢 是使用图形设计中的位图作为各种小部件的背景 根据元素的放
  • CVPixelBuffer 到 CIImage 总是返回 nil

    我试图将从 AVPlayerItemVideoOutput 中提取的 PixelBuffer 转换为 CIImage 但总是为零 The Code if videoOutput hasNewPixelBufferForItemTime pl
  • iPhone模拟器资源未更新

    我的 iPhone 模拟器拒绝更新我编辑的资源 进行 清理 并构建后 安装了新资源 在第二次运行时 它重新安装了旧的 我不知道它们是从哪里来的 有什么建议么 Go into Library Application Support iPhon
  • 比较 2 个文件并保留两个文件不共同的条目

    我有一个 CSV 文件和一个数据库表作为输入 我需要保留数据库表中的所有记录 但排除 CSV 文件中的记录 最终所有内容都会写入 CSV 文件 我所有的尝试都导致了数百个重复 所以我在这里面临很大的挑战 这是一个快速而肮脏的技巧 但它应该适
  • Concrete5:我可以在常规页面上使用 $_GET 变量作为查询字符串吗?

    GET 变量如何与 Concrete5 一起使用 我可以在常规页面上使用它吗 我知道我可以通过 url 段对单页执行此操作 我只是想知道常规页面是否可以 例子是 http www domain name com about us name
  • 弯曲方向列的高度相等,无需设置高度

    我想要一个没有明确设置高度的弹性容器 并且它的所有子容器都具有相同的高度 我不太清楚如何实现这一点 如果弹性容器设置了高度 我可以让它工作 但我希望它的高度根据子项是动态的 同样 它们应该都是相等的 并根据最大的孩子计算 我不想依赖js来使
  • Matplotlib 获取子图(轴)大小?

    只是徘徊 如何获得 Matplotlib 中子图 轴 的大小 如果我执行 Ctrl F 大小 https matplotlib org 3 1 1 api axes api html https matplotlib org 3 1 1 a
  • SQL Server 返回不等于 <> 值且为 NULL 的行

    我有一个表 其中有一列值可以是 rowTypeID 1 2 3 or null 我想编写一个查询 返回其中不包含值 3 的任何行 在此示例中 我想要所有 NULL 行以及所有 1 2 行 我只是不想要值为 3 的行 当前为数据库设置了 Se
  • 将 Gridsearch 中的最佳参数保存在 pandas 数据框中

    我需要将所有参数组合和相应的精度保存在一种 pandas 数据框中 我希望我已经说清楚了 如果我做错了什么 请指出 示例代码是 from sklearn grid search import GridSearchCV import skle
  • 如何检测 ES 模块是否是主模块?

    如何检测 ECMAScript 模块是否为主模块 这对于 CommonJS 模块来说很容易 参见检测是通过 require 调用还是直接通过命令行调用 https stackoverflow com questions 6398196 de
  • Pydantic - 动态创建具有多个基类的模型?

    来自pydantic 文档 https pydantic docs helpmanual io usage models 我的理解是 import pydantic class User pydantic BaseModel id int