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
的属性。另见