- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我正在记录数据并且想要关联一些数据元素,这样每个记录的集合总是有一个固定的组成,即没有缺失的字段。
作为程序员,我的大部分经验都是使用 Ada 或 C/C++ 变体。在 Ada 中,我会使用记录类型和聚合赋值,这样当记录类型更新为新字段时,编译器会通知任何使用该记录的人。在 C++ 中,我很可能会使用存储类和构造函数来做类似的事情。
在 Python 中处理类似情况的合适方法是什么?在这种情况下,类是正确的答案,还是有一个更轻的类比 Ada 记录?
另外一个想法,Ada 记录和 C++ 构造函数都允许默认初始化值。是否有针对上述问题的 Python 解决方案也提供了该功能?
最佳答案
A namedtuple (来自收藏库)可能适合您的目的。它基本上是一个元组,允许按名称和索引位置引用字段。所以它是有序命名字段的固定结构。它还是轻量级的,因为它使用 slots
来定义字段名称,从而消除了在每个实例中携带字典的需要。
一个典型的用例是定义一个点:
from collections import namedtuple
Point = namedtuple("Point", "x y")
p1 = Point(x=11, y=22)
它的主要缺点是,作为一个元组,它是不可变的。但是有一种方法 replace
允许您用新值替换一个或多个字段,但在这个过程中会创建一个新实例。
ActiveState Python Recipes 576555 中还有一个名为 records 的可变版本的 namedtuple。允许直接更改字段。我已经使用过它并且可以保证它运行良好。
关于c++ - Ada 记录/C++ 结构类型的 Python 对应物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6288285/
我想检查我的应用程序或系统中是否存在库。在 Java 中,我通常执行 System.loadlibrary,但是有谁知道 C 中类似的相应调用吗? 最佳答案 是dlopen打开一个库,dlsym 从加
我在 typescript 中输入以下内容 export type Excludable = T & { isExcluded?: boolean } 其中过滤值: export type Filte
我最近在我的应用程序中添加了一种方法,可以自动格式化 TextView ,从“50000”到“50,000”,效果绝对完美。现在我遇到的问题是,在我的应用程序中,有多个按钮功能可以从该 TextVie
SELECT * FROM conversations WHERE chatMembers LIKE '%1%'AND chatMembers LIKE '%10%' 对话表 id | chatMem
我正在编写一个需要将 Java Date() 值保存到 MySQL 数据库的 RESTful Web 服务,但是,我不确定 MySQL 中可以保存 Java Date() 的数据类型是什么,或者我是否
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
我曾尝试使用 swift 开发一款利用 iPhone 的 3D 触摸硬件的游戏。然而,当我将我的应用程序提交到 App Store 时,它被拒绝了,因为该游戏无法在 iPad 上玩。 我的问题是,
Qt 的有序关联容器对应项 std::map是QMap , std::set是QSet , 对于无序关联容器 std::unordered_map是QHash . 我应该用什么来代替std::unor
JavaScript 方法 String.fromCharCode() 在以下意义上与 Python 的 unichar() 等效: print unichr(213) # prints Õ on t
正如谷歌在 "Discontinuing support for JSON-RPC and Global HTTP Batch Endpoints" 中提到的那样,Google API 客户端库已重新
我正在使用 MapLayer 和 MapOverlay 在 map 中创建自己的路径/折线,GPS 捕获的所有点都存储在一个结构中,以便我可以访问它们。随时。 现在,我希望路径在用户操作 map (缩
我们使用 Adobe Flash Builder 创建由 Flex 提供支持的交互式 Web 应用程序。现在我们正在寻找替代方案,让我们在 UI 设计和迎合 HTML5 的编码方面拥有同样的开发便
我想知道Android/Java 中类似C#/C++ 中的GetTickCount 方法的相应方法吗? 最佳答案 Android 为 SystemClock.uptimeMillis() .请注意,u
我用 Vue + Phaser 开始了新项目,但是当我尝试加载 Assets 时,this.game.load.image 中的“load”和“add”返回“undefined”。我尝试从 JS 文件
我是一名优秀的程序员,十分优秀!