python中類的屬性、方法、結構以及靜態方法
一、類屬性
在Python中一切皆物件,類也是一個物件--->類物件,在程式執行中,類物件在記憶體中只有一份,通過它可以創建出很多個物件例項,除了封裝例項和屬性的方法外,類物件還可以擁有自己的屬性和方法:類屬性和類方法
通過類名的方式可以直接訪問類的屬性
類屬性其實就是 給類物件定義類的屬性,通常用來記錄與這個類相關的特徵
二、類方法
類屬性就是針對類物件定義的,使用賦值語句在class關鍵字下可以定義屬性,類屬性用於記錄於這個類相關的特性
類方法就是針對類物件定義的方法,在類方法內部就可以直接訪問類屬性或呼叫其他類方法
三、類的結構
1.使用面向物件開發,第一步是設計類
2.使用 類名() 建立物件,建立的動作有兩步
1)在記憶體中為物件分配空間
2)呼叫初始化方法__init__為物件初始化
3.物件建立後,記憶體中就有一個物件的實實在在的存在
因此:
- 創建出來的物件叫做類的例項
- 建立物件的動作叫做例項化
- 物件的屬性叫做例項屬性
- 物件呼叫的方法叫做例項方法
在程式執行時:
- 物件各自擁有自己的例項屬性
- 呼叫物件的方法,可以通過self,訪問自己的屬性,呼叫自己的方法
由此得出結論:
1)每個物件都有自己獨立的記憶體空間,儲存各自不同的屬性
2)多個物件的方法,在記憶體中只有一份,在呼叫方法時,需要把物件的引用傳遞到方法內部
四、靜態方法
在開發中,如果需要在類中封裝一個方法,這個方法既不需要訪問例項屬性或者呼叫例項方法,也不需要訪問類屬性或者呼叫類方法,這個時候,我們就可以把這個方法封裝成一個靜態方法
五、例項:
1.設計一個Game類
2.屬性
定義一個類屬性top_score記錄遊戲的歷史最高分(與這個遊戲有關,每次遊戲的時候與遊戲最高分無關)
定義一個例項屬性player_name記錄當前遊戲玩家的玩家姓名
3.方法:
靜態方法show_help顯示遊戲幫助資訊(即不需要訪問類屬性,也不需要訪問例項熟悉)
類方法show_top_score顯示歷史最高分(訪問類屬性)
例項方法start_game開始當前玩家的遊戲
1)檢視幫助資訊
2)檢視歷史最高分
3)建立遊戲物件,開始遊戲
案例小結:
1.例項方法--方法內部需要訪問例項屬性
例項方法內部可以使用 類名. 訪問類屬性
2.類方法:方法內部“只”需要訪問類屬性
3.靜態方法:方法內部,不需要訪問例項屬性和類屬性
提問:
如果方法內部 即需要訪問例項屬性,又需要訪問類屬性,應該定義什麼方法?
答案:
應該定義例項方法
因為,類只有一個,在例項方法內部可以使用類名,訪問類屬性