gpt4 book ai didi

python - 如何将字段添加到 namedtuple?

转载 作者:太空狗 更新时间:2023-10-29 17:12:59 27 4
gpt4 key购买 nike

我正在处理命名元组列表。我想在创建每个命名元组后为其添加一个字段。似乎我可以通过将它作为属性引用来做到这一点(如 namedtuple.attribute = 'foo'),但它不会添加到字段列表中。如果我不对字段列表做任何事情,有什么理由不应该这样做?有没有更好的添加字段的方法?

>>> from collections import namedtuple
>>> result = namedtuple('Result',['x','y'])
>>> result.x = 5
>>> result.y = 6
>>> (result.x, result.y)
(5, 6)
>>> result.description = 'point'
>>> (result.x, result.y, result.description)
(5, 6, 'point')
>>> result._fields
('x', 'y')

最佳答案

你所做的工作是因为 namedtuple(...)返回一个新类。要实际获得 Result 对象,您需要实例化该类。所以正确的做法是:

Result = namedtuple('Result', ['x', 'y'])
result = Result(5, 6)

而且您会发现向这些对象添加属性不起作用。所以你不应该这样做的原因是因为它不起作用。只有滥用类对象才有效,我希望我不需要详细说明为什么这是一个可怕的想法。

请注意,无论您是否可以向 namedtuple 添加属性(即使您事先列出了所有需要的属性),您都无法在创建 namedtuple 对象后对其进行更改。元组是不可变的。因此,如果您出于任何原因需要以任何方式或形状在创建后更改对象,则不能使用 namedtuple。您最好定义一个自定义类(namedtuple 为您添加的某些内容甚至对可变对象都没有意义)。

关于python - 如何将字段添加到 namedtuple?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324644/

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