gpt4 book ai didi

c++ - Ada 记录/C++ 结构类型的 Python 对应物是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:06:46 25 4
gpt4 key购买 nike

假设我正在记录数据并且想要关联一些数据元素,这样每个记录的集合总是有一个固定的组成,即没有缺失的字段。

作为程序员,我的大部分经验都是使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com