可变的名字元组?

Joe*_*oom 1 python namedtuple

假设我有:

from collections import namedtuple
NT = namedtuple('name', ['x'])
Run Code Online (Sandbox Code Playgroud)

有人可以解释之间的区别:

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

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

use*_*ica 7

NT不是一个有名的元组.NT是一个班级.它的实例是命名元组.

您无法重新分配x实例.虽然您可以在技术上混淆x类,但这将破坏x实例属性的属性访问,因为x类是实例依赖于实现相应实例属性的描述符.