Skip to main content
 首页 » 编程设计

python之可变命名元组

2025年05月04日14zhenyulu

假设我有:

from collections import namedtuple 
NT = namedtuple('name', ['x']) 

谁能解释一下它们之间的区别:

  1. NT.x = 3
  2. var = NT(x=3)

我可以将 NT.x 更改为任何(可变的)但 var.x 是不可变的。为什么会这样?

请您参考如下方法:

NT 不是命名元组。 NT 是一个类。它的实例是命名元组。

您不能在实例上重新分配 x。虽然您可以在技术上弄乱类上的 x,但这会破坏实例的 x 属性的属性访问,因为 x 在类上是 descriptor该实例依赖于实现相应的实例属性。