具有类继承的数据类字典

2024-01-13

我有以下课程

@dataclass_json
@dataclass
class Input:
    sources: List[Sources] =None
    Transformations: List[str] =None

也:

@dataclass_json
@dataclass
class Source:
    type: str =None
    label: str =None
    path: str = None

和两个子类:

@dataclass_json
@dataclass
class Csv(Source):
    csv_path: str=None
    delimiter: str=';'

and

@dataclass_json
@dataclass
class Parquet(Source):
    parquet_path: str=None

现在给出字典:

parquet={type: 'Parquet', label: 'events', path: '/.../test.parquet', parquet_path: '../../result.parquet'}
csv={type: 'Csv', label: 'events', path: '/.../test.csv', csv_path: '../../result.csv', delimiter:','}
input={'sources':[csv, parquet]}

现在我想做一些类似的事情

Input().from_dict(input) 

与输出:

Input(sources: [Parquet(...), Csv(...)]).

这实际上是有效的,但它只返回来自数据类 Source 的 3 个参数的值(类型、标签和路径),而不是 Csv 和 Parquet 的其他特定参数(csv_path、delimiter 和 parquet_path),这些参数只是给出了默认值。这可能是由于库 dataclass_json 在初始化类之前获取了类的架构。另一方面,我想仍然使用 dataclass_json 并只制作一个包装器,因为它具有良好的大小写和错误处理能力。

我想要这种行为,因为每个源类型都有不同的参数来定义自己(例如 Csv 有分隔符,但 Parquet 没有,等等......)。

我努力尝试获取类 Source 并在库 dataclass_json 中找到子类。这样做,我遇到了

cls.__args__[0]

其类型为“GenericMeta”。但鉴于此,我无法访问其子类。

有什么解决办法吗?

顺便说一句,我正在使用 Python 3.6。

在此先感谢您的帮助。


我知道这个线程相当旧,但对于其他寻找解决方案的人来说,可以看看英安岩。

这是他们的 github 存储库的链接:https://github.com/konradhalas/dacite#quick-start https://github.com/konradhalas/dacite#quick-start

为了完整起见,这里是快速入门代码:

from dataclasses import dataclass
from dacite import from_dict


@dataclass
class User:
    name: str
    age: int
    is_active: bool


data = {
    'name': 'John',
    'age': 30,
    'is_active': True,
}

user = from_dict(data_class=User, data=data)

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

具有类继承的数据类字典 的相关文章

  • Python的unpack中的逗号是什么意思?

    我们可以简单地使用 crc struct unpack gt i data 为什么人们这样写 crc struct unpack gt i data 逗号是什么意思 第一个变体返回一个单元素元组 In 13 crc struct unpac
  • 在 Python 3.6 中,为什么负数的分数次方在 numpy 数组中返回 nan?

    我最近开始学习Python 并且经历了NumPy 官方快速入门指南 https docs scipy org doc numpy dev user quickstart html indexing slicing and iterating
  • 对 Python DataFrame 进行子集化

    我正在从 R 过渡到 Python 我刚刚开始使用 Pandas 我有一个可以很好地子集化的 R 代码 k1 lt subset data Product p id Month lt mn Year yr select c Time Pro
  • 计算温度的偏导数(温度的水平平流)

    我想知道哪种方法计算x和y方向温度的偏导数 温度的水平平流 最正确 第二个代码使用温度 纬向风和经向风的数据矩阵 提取温度 T 纬向风分量 u 和经向风分量 v 的数据 import matplotlib pyplot as plt imp
  • 如何在 pygame 中聚焦光线或如何仅绘制窗口的某些圆形部分?

    对于这一点 如果您熟悉它 请想想 超级马里奥制造2 中嘘关卡中的黑暗模式 我试图在角色周围创建一个圆形聚光灯 这也将使圆圈范围内的任何内容都可见 例如部分站在地板上 敌人或场景中的任何其他物体 我的计划是首先绘制圆圈 聚光灯 然后绘制场景
  • 将 csv 文件按多列拆分为 panda 数据框

    我有一个包含多列的 tsv 文件 有 10 多列 但对我来说重要的列是名称为 user name shift id url id 的列 我想创建一个数据框 首先根据用户名分隔整个 csv 文件 即只有具有相同用户名的行才会分组在一起 从该块
  • Cython:为什么 size_t 比 int 快?

    更改某些 Cython 变量的类型int输入size t可以显着减少某些功能的时间 30 但我不明白为什么 例如 cimport numpy as cnp import numpy as np def sum int cnp int64 t
  • 为图例中的点设置固定大小

    我正在制作一些散点图 我想将图例中的点的大小设置为固定的相等值 现在我有这个 import matplotlib pyplot as plt import numpy as np def rand data return np random
  • 为什么全新安装后会有pip和conda包?

    All Windows 10 64 位 d l Anaconda 2 5 0 与 Python3 64 位并安装 全新安装后我输入conda list 并且 在软件包中 我看到 重复像 jupyter 1 0 0 py35 1 jupyte
  • 尝试修复我的功能

    我正在开发一个函数 我必须返回一个元组 其中第一个参数是最大数字的 str 第二个参数是 int 列表 这是示例以及我为该函数编写的内容 投票 G G N G C G 1 3 0 1 您必须将最大值的位置映射到正确的一方 parties N
  • Python unittest - 与assertRaises相反?

    我想编写一个测试来确定在给定情况下不会引发异常 测试是否有异常很简单is上调 sInvalidPath AlwaysSuppliesAnInvalidPath self assertRaises PathIsNotAValidOne MyO
  • import numpy 和 import numpy as np 之间的区别

    我明白 如果可能的话 应该使用 import numpy as np 这有助于避免由于命名空间引起的任何冲突 但我注意到虽然下面的命令有效 import numpy f2py as myf2py 以下不 import numpy as np
  • 具有条件的重复行 pandas dataframe python

    我的数据框有问题 我的 df 是 product power brand product 1 3 x 1500W brand A product 2 2x1000W 1x100W product 3 1x1500W 1x500W brand
  • 在 Django/python 中,如何将内存缓存设置为无限时间?

    cache set key value 9999999 但这并不是无限的时间 def get memcache timeout self timeout Memcached deals with long gt 30 days timeou
  • Python 类方法的示例用例是什么?

    我读了Python 中的类方法有什么用 https stackoverflow com questions 38238 what are class methods in python for但那篇文章中的例子很复杂 我正在寻找 Pytho
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar
  • 使用 Pandas 和 Group By 绘制堆叠直方图

    我正在使用如下所示的数据集 Gender Height Width Male 23 4 4 4 Female 45 4 4 5 我想可视化高度和宽度的堆叠直方图 我希望每个图有两个堆叠的直方图 每个性别一个 这是文档中的堆叠直方图 如果存在
  • python pandas如何在多个条件下过滤字符串

    我有以下数据框 import pandas as pd data 5Star FiveStar five star fiv estar data pd DataFrame data columns columnName 当我尝试用一 种条件
  • Tensorflow ctc_loss_calculator:找不到有效路径

    当运行我的神经网络 双向 LSTM 进行音频识别时 我使用连接主义时间分类 CTC 但在某些时候 训练网络时我几乎每批都会收到来自 Tensorflow 的警告 W tensorflow core util ctc ctc loss cal

随机推荐

  • 水平连接字符串元胞数组

    我希望水平连接字符串元胞数组的行 如下所示 start hello world test join me please finish helloworldtest joinmeplease 是否有任何内置函数可以完成上述转换 有一种简单的非
  • Spring Boot:部署到外部服务器时如何设置异步超时

    在使用嵌入式 tomcat 部署我的 spring boot 应用程序时 我设置异步超时如下 Bean public EmbeddedServletContainerFactory servletContainer TomcatEmbedd
  • Ruby 中非对象的“事物”示例

    一切都是对象 是我学到的关于 Ruby 的第一件事之一 但在 Peter Cooper 的书中Ruby 入门 从新手到专业人士 其中提到 almostRuby 中的一切都是对象 你能给我一些吗示例things那些不是 Ruby 中的对象 我
  • Gulp + babelify + browserify 问题

    我正在尝试使用 browserify 和 babelify 创建一个 gulp 任务 这是任务 var gulp require gulp var browserify require gulp browserify var source
  • 根据列值连接不同的表

    我有一个表R 其中包含表P的外键 在表P中有一列 告诉我表P中的记录是什么类型 与 P type 列中的可能值相关 根据表存在 因此 如果 P type 中的值为 C 则表示名为 C 的表 如果值为 D 则表示名为 D 的表 现在我想要一个
  • 文件的 listFiles() 不适用于符号链接?

    我有以下文件对象通过符号链接指向目录 File directory new File path symlink foo bar String files directory listFiles listFiles 返回 null 这是因为符
  • 如何循环加载所有用户的注册表配置单元

    使用管理员权限 我需要枚举 Windows 7 系统上的所有用户 甚至是已注销的用户 然后我需要为每个用户加载注册表配置单元并设置一个密钥 NetUserEnum 给我 SID 我猜 LsaEnumerateLogonSessions 也会
  • 在 Windows 上我应该将 Eclipse 安装到哪个文件夹?

    我运行的是 Windows 7启用UAC 我一直觉得很奇怪Eclipse http www eclipse org 不使用安装程序 也不使用 AppData 文件夹在 Windows 中存储其数据 但最近我不得不重新安装几次 硬盘驱动器问题
  • Python tkinter 文本修改回调

    在 python 2 7 中 每次 Tkinter Text 小部件中发生更改时 我都尝试获取回调 该程序使用基于此处找到的代码的多个框架 在 tkinter 中的两个框架之间切换 https stackoverflow com quest
  • wpf:获取组合框值

    我有一个名为 cbFileSize 的 WPF 组合框 我尝试获取所选值 如下所示 string tmp cbFileSize SelectedValue ToString MessageBox Show tmp 但 tmp 设置为 Sys
  • 无法加载数据源的类:com.databricks.spark.csv

    My build sbt文件有这个 scalaVersion 2 10 3 libraryDependencies com databricks spark csv 2 10 1 1 0 我正在独立集群模式下运行 Spark 我的 Spar
  • 有条件地应用 Angular 4 中的点击事件

    是否可以在模板中定义一个附加点击处理程序的条件 例如 我能得到的最接近的是评估单击方法入口处的条件 a class user a 如果标志有的话 有没有一种方法可以避免完全绑定到单击事件isOverflown是假的吗 另外 我不想使用ng
  • 使用 Maven 打包并运行 Scala Spark 项目

    我正在 Scala 中编写一个应用程序 它使用Spark http spark apache org 我正在使用 Maven 打包应用程序 并在构建应用程序时遇到问题 uber 或 fat 罐子 https stackoverflow co
  • 在后台处理ViewExpiredException并恢复表单值

    是否有一个无数据库 primefaces 和 keep session alive 的解决方案来防止或在恢复表单输入时在后台静默处理 ViewExpiredException 例如 具有 保持登录 cookie 的用户不希望被重定向到某种错
  • 在 R 中执行时间序列的 fft

    我想使用 FFT 将波拟合到时间序列 目标是绘制具有不同谐波的图 并用它来预测 n 个数据点 我正在使用的代码基于此answer https stackoverflow com questions 41435777 perform four
  • 非本机长度的有符号和无符号整数的性能差异

    有这样一段话 CppCon 2016 钱德勒 卡鲁斯 Chandler Carruth 垃圾进 垃圾出 争论未定义的行为 https youtu be yG1OZ69H o t 39m16s 其中 Carruth 先生展示了 bzip 代码
  • Angular UI 路由器无法使用 Internet Explorer 9 进行解析

    我有一个 Angular v1 3 应用程序 它使用 Angular ui router v0 2 13 进行所有路由 该网站在所有浏览器上都能正常运行 包括 IE 10 和 IE 11 但不能在 IE 9 上运行 我们决定不再使用 IE8
  • 带箭头顶部和边框的框

    我只是要在上面创建一个盒子 边缘有一个箭头 我经常尝试但不幸的是相关的解决方案 我自然而然地在网上和网站上查询 但遗憾的是没有成功 所以它应该照顾 箭头应具有与框相同的边框和相同的背景颜色 所以现在看起来 arrow up width 10
  • Xcode 4 对当前版本的 MonoTouch 有影响吗?

    安装 Xcode 4 安全吗 今天发布的 MonoTouch 将允许您安装 XCode 4 并继续使用 MonoTouch 构建应用程序 但如果您使用安装 XCode 4 您将无法编辑 XIB 文件 我们建议开发人员安装新的 XCode 3
  • 具有类继承的数据类字典

    我有以下课程 dataclass json dataclass class Input sources List Sources None Transformations List str None 也 dataclass json dat