class Parent: x = 1 class Child1(Parent): pass class Child2(Parent): pass print(Parent.x, Child1.x, Child2.x)
Child1.x = 2 print(Parent.x, Child1.x, Child2.x)
Parent.x = 3 print(Parent.x, Child1.x, Child2.x)
点评:运行上面的代码首先输出 1 1 1,这一点大家应该没有什么疑问。
接下来,通过Child1.x = 2给类Child1重新绑定了属性x并赋值为2,所以Child1.x会输出2,而Parent和Child2并不受影响。
执行Parent.x = 3会重新给Parent类的x属性赋值为3,由于Child2的x属性继承自Parent,所以Child2.x的值也是3;
而之前我们为Child1重新绑定了x属性,那么它的x属性值不会受到 Parent.x = 3的影响,还是之前的值2。 1 1 1 1 2 1 3 2 3