Python做为一门弱类型语言,建立变量时不用像C语言那样事先声明(如:int xxx/char xxx),只要是=
符号左边的变量Python找不到,它就会本身去建立。源此有题以下:python
class A(object):
x = 1
class B(A):
pass
class C(A):
pass
B.x = 2
A.x = 3
print(A.x, B.x, C.x)
问:输出结果为什么?
答:3 2 3app
这是由于,在执行B.x = 2
这一语句时,B发本身没有x诶,那就建立一个咯!C不一样,没有=
让它建立变量,因而去父类那里找,所以输出跟A.x
的值同样。spa
如何证实B.x
中的x不是A中的x呢?很简单,比较id值:code
In [75]: A.x is C.x
Out[75]: True
In [76]: A.x is B.x
Out[76]: False