物件導向 -- 類的載入順序 類和物件的名稱空間

想吃橙子發表於2019-03-26

類的載入順序

類和類一個縮排內的程式碼在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)

 

相關文章