为什么第二个输出不是 2 2 2,第三个输出不是 3 3 3? 这样的输出背后的原因是什么?
class A(object):
val = 1
class B(A):
pass
class C(A):
pass
print (A.val, B.val, C.val)
B.val = 2
print (A.val, B.val, C.val)
A.val = 3
print (A.val, B.val, C.val)
您使用 A() 初始化所有类,因此 A.val、B.val、C.val 都引用相同的值 1 (1 1 1)
当您修改 B.val = 2 时,B.val 的值会发生变化,但 A.val 和 C.val 的值保持不变 (1 2 1)
接下来修改 A.val = 3 soo A.val = 3 并且由于 C.val 继承自 A,因此它也变为 3。但是 B.val 仍然为 2,因为它有自己的 val 属性,该属性与 A.val 分开( 3 2 3)