假设我有:
from collections import namedtuple
NT = namedtuple('name', ['x'])
有人可以解释之间的区别:
NT.x = 3
var = NT(x=3)
我可以将NT.x
更改为任何内容(可变),但var.x
是不可变的。为什么会这样?
答案 0 :(得分:7)
NT
不是命名元组。 NT
是一个班级。它的实例是命名元组。
您无法在实例上重新分配x
。虽然可以在技术上混淆了类上的x
,但这会破坏实例的x
属性的属性访问权限,因为类上的x
是实例依赖的descriptor来实现相应的实例属性。
答案 1 :(得分:2)
namedtuple
是一个班级工厂。
NT(x=3)
为您提供新创建的课程的实例。
NT.x =3
设置类本身的属性。
答案 2 :(得分:2)
NT
是类 >>> NT.x
<property object at 0x7f2a2dac6e58>
的属性,而不是该类的实例的属性:
NT
它的存在只是告诉你x
的实例有一个名为Sub SheetTabColor()
Dim mySheets As Worksheets
Dim mySheet As Worksheet
Set mySheets = Sheets(Array("Christine", "Marina", "Roberto", "Urszula", "Lois", "Matt", "Stephanie", "Sally", "Iryna", "Katherine", "Matthew", "Julio", "Lavinia"))
For Each mySheet In mySheets
mySheet.Tab.Color = RGB(0, 255, 255)
Next
End Sub
的属性。另请参阅this question。