Python 可变名称双倍?

Python 可变名称双倍?,python,namedtuple,Python,Namedtuple,假设我有: from collections import namedtuple NT = namedtuple('name', ['x']) 有人能解释一下: NT.x=3 var=NT(x=3) 我可以将NT.x更改为任何内容(可变),但var.x是不可变的。为什么会这样?NT不是一个命名的元组NT是一个类。它的实例名为tuples 不能在实例上重新分配x。从技术上讲,您可以处理类上的x,这将中断实例的x属性的属性访问,因为类上的x是实例实现相应实例属性所依赖的属性。NT不是命名的元组NT

假设我有:

from collections import namedtuple
NT = namedtuple('name', ['x'])
有人能解释一下:

  • NT.x=3
  • var=NT(x=3)

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

    NT
    不是一个命名的元组<代码>NT是一个类。它的实例名为tuples


    不能在实例上重新分配
    x
    。从技术上讲,您可以处理类上的
    x
    ,这将中断实例的
    x
    属性的属性访问,因为类上的
    x
    是实例实现相应实例属性所依赖的属性。

    NT
    不是命名的元组<代码>NT是一个类。它的实例名为tuples


    不能在实例上重新分配
    x
    。从技术上讲,您可以处理类上的
    x
    ,这将中断实例的
    x
    属性的属性访问,因为类上的
    x
    是实例实现相应实例属性所依赖的属性。

    namedtuple
    是一个类工厂

    NT(x=3)
    为您提供新创建的类的实例


    NT.x=3
    设置类本身的属性。

    namedtuple
    是类工厂

    NT(x=3)
    为您提供新创建的类的实例


    NT.x=3
    设置类本身的属性。

    NT.x
    是类
    NT
    的属性,而不是该类的实例:

    >>> NT.x
    <property object at 0x7f2a2dac6e58>
    
    >>NT.x
    

    它的存在只是告诉您,
    NT
    的实例有一个名为
    x
    的属性。另请参见。

    NT.x
    是类
    NT
    的属性,而不是该类的实例:

    >>> NT.x
    <property object at 0x7f2a2dac6e58>
    
    >>NT.x
    
    它的存在只是告诉您,
    NT
    的实例有一个名为
    x
    的属性。另见