''' 封裝: 把亂七八糟的數據扔進列表里面,這是數據層面的封裝 把常用的代碼段打包成一個函數,這是語句層面的封裝 把數據和代碼打包成一個對象,這也是封裝 對象的特征稱為“屬性”,對象的行為稱為“方法”,即: 對象 = 屬性 + 方法 從代碼層面看,“屬性”就是變量,“方法”就是函數,將定義的這些稱為類(class) 對象叫做這個類的一個實例(instance),也叫實例對象(instance object) ''' # 類名約定用大寫字母開頭,含 class 表明定義一個類 class Gm(): str = "這是一個類屬性(類變量)" # 函數名用小寫字母開頭,含 def 表明定義一個函數 def instancefunc(self): print("這是一個實例方法") print(self) @classmethod # 該裝飾器用來標識為類方法,可以訪問類屬性 def classfunc(cls): # 第一個參數必須是類對象(cls.) print("這是一個類方法") print(cls) @staticmethod # 該裝飾器用來標識為靜態方法,不可以訪問類屬性 def staticfunc(): # 形參沒有 self 或 cls print("這是一個靜態方法") # Gm1(繼承類)是子類,Gm(被繼承的類)是基類、父類或超類。 # 一個子類可以繼承分類的任何屬性和方法。 # 若子類中定義與父類同名的方法或屬性,則會自動覆蓋父類對應的方法或屬性 class Gm1(Gm): pass # 調用 test = Gm() # 初始化一個Gm的對象(創建一個Gm對象),即test是Gm的實例對象 print(test) print("**************************************") test.instancefunc() # 對象調用實例方法 test.classfunc() # 對象調用類方法 test.staticfunc() # 對象調用靜態方法 print("**************************************") print(test.str) print("**************************************") Gm.staticfunc() # 類調用靜態方法 Gm.classfunc() # 類調用類方法 Gm.instancefunc(test) # 類調用實例方法,需要帶參數
實例方法:
class Gm(): str = "這是一個類屬性(類變量)" def __init__(self, st): self.st = st def instancefunc(self): print("這是一個實例方法") print(Gm.str) print(self.st) print(self.str) print(self) if __name__ == '__main__': test = Gm("abc") print(test) print(test.str) print(test.st) test.instancefunc()