关于子类访问父类的类变量问题

关于子类访问父类的类变量问题

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
相关文章
相关标签/搜索