编辑
2025-01-06
python
00
请注意,本文编写于 336 天前,最后修改于 336 天前,其中某些信息可能已经过时。

目录

使用nametuple创建元组类

使用nametuple创建元组类

collections.namedtuple​ 是 Python 标准库 collections​ 模块中的一个工厂函数,用于创建具有命名字段的元组子类。与普通元组相比,namedtuple​ 允许你通过名称访问元素,而不仅仅是通过索引,这使得代码更具可读性。

以下是 namedtuple​ 的一些关键点:

  • 定义:你可以使用 namedtuple​ 创建一个新的元组子类,这个子类将拥有你指定的名字和字段名。

  • 语法namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

    • typename​ 是返回的新类的名称。
    • field_names​ 可以是一个字符串、一个可迭代的对象或一个属性名到默认值的字典。
    • rename​ 如果设置为 True,则无效的字段名会自动重命名。
    • defaults​ 是一个可选的参数,可以为字段设置默认值。
    • module​ 参数可以用来覆盖实例的 __module__​ 属性。
  • 特性

    • namedtuple​ 实例具有一些类似对象的属性,例如 _asdict()​ 方法,它可以将 namedtuple​ 转换为 OrderedDict。
    • 它们是不可变的,就像常规的元组一样。
    • 它们支持打包(创建实例)和拆包(从实例中提取值)。
    • 它们比定义完整的类更轻量级,但比普通元组提供了更多的语义意义。

这是一个简单的例子,展示如何使用 namedtuple​:

python
from collections import namedtuple # 定义一个新的子类 'Car',它有 'color' 和 'mileage' 字段 Car = namedtuple('Car', ['color', 'mileage']) # 创建一个 Car 对象 my_car = Car('red', 3812.4) # 访问字段 print(my_car.color) # 输出: red print(my_car.mileage) # 输出: 3812.4 # 使用 _asdict() 方法转换为 OrderedDict print(my_car._asdict()) # 输出: OrderedDict([('color', 'red'), ('mileage', 3812.4)])

请注意,从 Python 3.7 开始,推荐使用 typing.NamedTuple​ 或者数据类(dataclasses),因为它们提供了更好的类型检查支持和其他功能。如果你正在编写新代码并且不关心向后兼容性问题,那么可能应该考虑这些替代方案。

本文作者:君逍遥

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!