類的載入順序
類和類一個縮排內的程式碼在py檔案從上到下解釋的時候就已經被執行了
類中的程式碼永遠是從上到下依次執行的
練習 :寫一個類,能夠自動的統計這個類有多少個物件 class A: Count = 0 def __init__(self,name): self.name = name A.Count += 1 a = A('alex') # 建立了一個新物件 a2 = A('alex2') print(A.Count)
類和物件的名稱空間
類和物件是儲存在兩塊名稱空間裡
變數 = 一個類的記憶體地址
物件去找在類的空間中的名字的前提 : 自己的空間裡沒有這個名字
class Student: country = 'China' def __init__(self,name): self.name = name zhang = Student('張堯') zou = Student('鄒路') print(zhang.country) Student.country = '法國人' print(zhang.country) zhang.country = '日本人' # 給一個物件新增了一個屬性 print(zou.country) print(zhang.country)
在操作靜態變數的時候應儘量使用類名來操作 而不是使用物件名來操作
只要是對一個物件的名字直接賦值,那麼就是在這個物件的空間內建立了新的屬性
只要是對一個可變的資料型別內部的變化,那麼仍然是所有的物件和類共享這個改變的結果
所有的靜態變數都是用類名來操作,這樣修改就能被所有的物件感知到
如果是對於可變資料型別的靜態變數,操作的是這個資料內部的內容,也可以使用物件來呼叫
class B: l = [0] def __init__(self,name): self.name = name b1 = B('顏海清') b2 = B('孫晶晶') print(B.l) print(b1.l) print(b2.l) b1.l[0] += 1 print(b2.l[0]) b1.l = [123] print(b2.l)