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