从字典创建类实例属性?

2023-11-29

我正在从 CSV 导入并大致以以下格式获取数据

{ 'Field1' : 3000, 'Field2' : 6000, 'RandomField' : 5000 }

字段的名称是动态的。 (嗯,它们是动态的,因为可能不止 Field1 和 Field2,但我知道Field1 and Field2永远都会在那里。

我希望能够将这本词典传递到我的班级中allMyFields这样我就可以将上述数据作为属性访问。

class allMyFields:
    # I think I need to include these to allow hinting in Komodo. I think.
    self.Field1 = None
    self.Field2 = None

    def __init__(self,dictionary):
        for k,v in dictionary.items():
            self.k = v
            #of course, this doesn't work. I've ended up doing this instead
            #self.data[k] = v
            #but it's not the way I want to access the data.

q = { 'Field1' : 3000, 'Field2' : 6000, 'RandomField' : 5000 }
instance = allMyFields(q)
# Ideally I could do this.
print q.Field1

有什么建议么?至于为什么——我希望能够利用代码提示,并将数据导入到名为的字典中data我一直在做的事情并没有给我带来任何好处。

(由于变量名称直到运行时才被解析,我仍然不得不向 Komodo 扔一根骨头 - 我认为self.Field1 = None应该够了。)

那么——我该如何做我想做的事呢?或者我是在咆哮一棵设计糟糕的非Python树?


您可以使用setattr(但要小心:并非每个字符串都是有效的属性名称!):

>>> class AllMyFields:
...     def __init__(self, dictionary):
...         for k, v in dictionary.items():
...             setattr(self, k, v)
... 
>>> o = AllMyFields({'a': 1, 'b': 2})
>>> o.a
1

Edit:让我解释一下上面的代码和寂静鬼的回答。上面的代码片段创建了一个类实例属性基于给定的字典。 SilentGhost 的代码创建了一个类,其类属性基于给定的字典。

根据您的具体情况,这些解决方案可能更合适。您愿意创建一个或多个类实例吗?如果答案是一,您也可以完全跳过对象创建,只构造类型(因此采用 SilentGhost 的答案)。

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

从字典创建类实例属性? 的相关文章

  • Python包不安装子模块

    我在 dev 分支中创建了一个具有以下结构的包 在验证包安装正确之前不会合并到 main mypackage init py setup py requirements txt module py subpackage one init p
  • python中热图的层次聚类

    我有一个 NxM 矩阵 其值范围为 0 到 20 我可以使用 Matplotlib 和 pcolor 轻松获得热图 现在我想使用 scipy 应用层次聚类和树状图 我想重新排序每个维度 行和列 以显示哪些元素相似 根据聚类结果 如果矩阵是方
  • ValueError:“连接”层需要具有匹配形状的输入(连接轴除外)

    我正在尝试为我的项目构建 Pix2Pix 并收到错误 值错误 Concatenate层需要具有匹配形状的输入 除了连接轴之外 获得输入形状 None 64 64 128 None 63 63 128 生成器是一个 U 网模型 我的输入高度
  • 带括号的上下文管理器

    我试图了解新的新内容带括号的上下文管理器Python 3 10 中的功能 新功能中的顶部项目here https docs python org 3 10 whatsnew 3 10 html 我的测试示例是尝试编写 with open f
  • 如何在 Django 管理中以表格格式显示添加模型?

    我刚刚开始使用 Django 编写我的第一个应用程序 为我的家庭设计的家务图表管理器 在本教程中 它向您展示了如何添加相关对象 http docs djangoproject com en dev intro tutorial02 cust
  • 我怎样才能在python cgi中找到上传的文件名

    我制作了如下简单的网络服务器 import BaseHTTPServer os cgi import cgitb cgitb enable html
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • 将 matplotlib png 转换为 base64 以在 html 模板中查看

    背景 你好 我正在尝试制作一个简单的网络应用程序 按照教程计算阻尼振动方程 并将结果的 png 返回到 html 页面 然后将其转换为 Base64 字符串 Problem 该应用程序运行正常 只是在计算结果时返回损坏的图像图标 可能是因为
  • 可移植的非关系数据库

    我想尝试 尝试非关系数据库 最好的解决方案是 便携式 这意味着它不需要安装 理想情况下 只需将目录复制粘贴到某个地方即可使其工作 我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具 可从 python 访问 适用于 Windows
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • Selenium:等到 WebElement 中的文本发生变化

    我在用着selenium使用Python 2 7 从网页上的搜索框检索内容 搜索框动态检索结果并在框本身中显示结果 from selenium import webdriver from selenium webdriver common
  • 如何使用 python 操作系统更改驱动器?

    我正在尝试更改当前目录C to Y 我试过 import os os chdir Y 但我不断收到错误消息 提示无法找到驱动器 本质上我正在寻找相当于 cd d cmd 中的命令 你确定吗Y 确实是有效的驱动器号吗 Try os chdir
  • 如何在 Python 中仅列出 zip 存档中的文件夹?

    如何仅列出 zip 存档中的文件夹 这将列出存档中的每个文件夹和文件 import zipfile file zipfile ZipFile samples sample zip r for name in file namelist pr
  • Flask SQLAlchemy 与 MyPy - 模型类型错误

    我遇到了以下组合问题flask sqlalchemy and mypy 当我定义一个新的 ORM 对象时 例如 class Foo db Model pass where db是使用创建的数据库SQL炼金术应用于flask app mypy
  • 向量化 numpy bincount

    我有一个 2d numpy 数组 A我要申请np bincount 到矩阵的每一列A生成另一个二维数组B由原始矩阵每列的 bincounts 组成A 我的问题是 np bincount 是一个采用一维数组的函数 它不是像这样的数组方法B A
  • 从 Python 中编译的正则表达式中提取命名组正则表达式模式

    我有一个 Python 正则表达式 其中包含多个命名组 但是 如果先前的组已匹配 则可能会错过与一组匹配的模式 因为似乎不允许重叠 举个例子 import re myText sgasgAAAaoasgosaegnsBBBausgisego
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • Jinja2中获取请求参数

    如何检索请求参数a在 Jinja2 模板中 http foo bar a 1 我这个答案有点晚了 但其他解决方案并没有真正考虑到您对 Flask 的使用 事实上 您将 Flask 与 Jinja2 一起使用 这使得您的情况与其他框架有点不同
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t

随机推荐

  • 如何在Python中检查数字的“密码”[重复]

    这个问题在这里已经有答案了 我已经设置了一个程序来更改 密码 我让它检查它是否至少有 8 个字符 包含大写字母和数字 如果不满足此条件 它会再次要求输入密码 除了检查号码之外 我一切正常 我想知道是否有人可以提供帮助 npwv 1 whil
  • JSTL 1.0 字符串函数

    我正在尝试使用一些字符串函数 例如修剪或concat使用 JSTL 我尝试了以下方法 我尝试添加但我最终遇到了错误 我认为这适用于其他 JSTL 版本 例如 1 2 或 1 1 我需要知道的是如何在 JSTL 1 0 中使用字符串函数 JS
  • 对嵌套列表进行排序

    给出的是一个嵌套列表 具有以下标记 遗憾的是目前无法更改 我想对此列表进行排序 以及按 a 标签标题排序的所有嵌套列表 第一个 div 未嵌套在 li 中 应该用于对 ul 同级进行排序 性能也很重要 因为这个列表很容易包含超过 100 个
  • Pygame 从全屏切换到正常不起作用

    我目前正在尝试设置从窗口模式和全屏模式切换的设置 但是进入全屏并尝试返回后 游戏错误非常奇怪并且粘在左上角 顺便提一句 显示宽度 1280 显示高度 720 elif Settings Menu True screen fill 0 0 0
  • jQuery:如何动态检测窗口宽度?

    我的页面上有一个滚动元素 使用 jScrollPane jQuery 插件 我想要完成的是一种通过检测浏览器窗口的宽度来关闭滚动窗口的方法 我正在做响应式布局 我希望当浏览器低于一定宽度时关闭此滚动功能 当我刷新页面时 我能够使其工作 但是
  • 在 while 循环内将对象添加到列表中

    我正在尝试循环一个列表 该列表内部有 4 个数组 每个数组有 7 个值 我正在循环列表 然后当我从列表中获取一个数组时 因为我知道有多少个值具有该数组 所以我分配每个数组索引 如下所示 personObject setName String
  • 如何正确编码完整的 http url 字符串?

    我从用户那里获得一个 url 字符串 并希望将其转换为合法的 http url http one two Three four five 应该变成 http one two Three four 20 Five 但是 URLEncoder
  • Sass @import 指令在 Rails 引擎中使用时无法在插件中找到资源

    我正在构建一个使用 zurb foundation 样式表的 Rails 引擎 并且不断遇到相同的 Sass Syntax 错误 这看起来很奇怪 因为我在 Rails 应用程序中遵循了相同的过程 并且第一次尝试就成功了 因此 我决定通过启动
  • SQL:选择其他查询未选择的所有记录

    我正在寻找一个 SQL 查询来选择同一个表上的另一个查询未选择的所有记录 具体来说 我想选择具有特定字段 fieldA 重复项的所有记录 然后删除除其中一条记录之外的所有记录 因此 select 语句可能类似于以下内容 这不起作用 sele
  • javascript 调用函数 10 次,每次间隔 1 秒

    如何调用一个函数 10 次 for x 0 x lt 10 x callfunction 但每次通话之间间隔 1 秒 function callNTimes func num delay if num return func setTime
  • 如何在 SceneKit 中使用着色器添加透明度?

    我想从图像中获得透明效果 现在我只是用圆环进行测试 但着色器似乎不适用于 alpha 据我从这个帖子中了解到的 在 Scenekit 中使用混合函数 以及这个关于透明度的维基链接 http en wikibooks org wiki GLS
  • 如何将dojo工具包与rails 3.1 asset pipeline和coffeescript一起使用?

    我正在尝试在 Rails 3 1 应用程序上使用 dojo toolkit 作为 JS 框架 但我正在努力将 dojo require 结构与 sprockets require 和 Coffeescript 结合起来 看起来dojo需要磁
  • 如何使用 netbeans 在 java 中每次掷骰子后询问用户是否愿意继续游戏?

    我需要帮助解决这个问题 掷骰子游戏是用两个六面骰子进行的 玩游戏的用户将掷两个骰子 并生成两个介于 1 到 6 之间的随机数 两个数字的总和将用于决定下一步 如果总和为 2 3 或 12 则玩家获胜 如果总和是 7 或 11 那么他 她就输
  • 关闭 SKScene 返回 UIKit 菜单

    一旦我的 SpriteKit 游戏结束 我想回到我的UIKit MenuViewController 根据我到目前为止所学到的 使用协议 委托是最好的 选项 但我无法让它发挥作用 我知道该协议可能会高于类声明GameViewControll
  • 运行 Fiddler 作为 HTTP 到 HTTPS 反向代理

    我的机器上正在运行一项服务 该服务在 HTTPS 上发布 在 HTTP 上启动似乎有点复杂 某个远程计算机通过 HTTP 对我的计算机执行调用 这不受我的控制 我想对我的服务执行一些非性能关键的测试 看起来最简单的方法是使用有点像 HTTP
  • 在 Fortran 的 SYSTEM 子例程中使用变量

    如何在执行的命令中使用变量system子程序调用 例如 如果我想创建多个目录 例如test 1 1 test 1 2 依此类推 直到test 3 3那么我的代码应该是什么 我正在尝试以下代码 但似乎无法弄清楚在 部分要写什么 integer
  • Git 错误:无法提交配置文件

    我正在尝试将新的远程存储库 GitHub 添加到现有项目 但遇到了一个我以前从未见过且不理解的错误 git remote add github email protected me myrepo git error could not co
  • 标头和 Selenium Webdriver 2

    有没有办法在 Selenium WebDriver 测试中添加标头 与 Firefox 修改标头插件一样 我无法使用 HtmlUnitDriver 因为浏览器必须可见 WebDriver 不允许您使用任何基于浏览器的驱动程序更改或设置标头
  • 如何在设计时禁用子控件?

    我有自己的控制权 源自TCustomPanel 它有一个孩子 TEdit 在上面 type TMyControl class TCustomPanel private FEditor TEdit public constructor Cre
  • 从字典创建类实例属性?

    我正在从 CSV 导入并大致以以下格式获取数据 Field1 3000 Field2 6000 RandomField 5000 字段的名称是动态的 嗯 它们是动态的 因为可能不止 Field1 和 Field2 但我知道Field1 an