1. 程式人生 > >python中類的屬性、方法、結構以及靜態方法

python中類的屬性、方法、結構以及靜態方法

一、類屬性

在Python中一切皆物件,類也是一個物件--->類物件,在程式執行中,類物件在記憶體中只有一份,通過它可以創建出很多個物件例項,除了封裝例項和屬性的方法外,類物件還可以擁有自己的屬性和方法:類屬性和類方法

通過類名的方式可以直接訪問類的屬性

類屬性其實就是 給類物件定義類的屬性,通常用來記錄與這個類相關的特徵

二、類方法

類屬性就是針對類物件定義的,使用賦值語句在class關鍵字下可以定義屬性,類屬性用於記錄於這個類相關的特性

類方法就是針對類物件定義的方法,在類方法內部就可以直接訪問類屬性或呼叫其他類方法

三、類的結構

1.使用面向物件開發,第一步是設計類

2.使用 類名() 建立物件,建立的動作有兩步

1)在記憶體中為物件分配空間

2)呼叫初始化方法__init__為物件初始化

3.物件建立後,記憶體中就有一個物件的實實在在的存在

因此:

  1. 創建出來的物件叫做類的例項
  2. 建立物件的動作叫做例項化
  3. 物件的屬性叫做例項屬性
  4. 物件呼叫的方法叫做例項方法

在程式執行時:

  1. 物件各自擁有自己的例項屬性
  2. 呼叫物件的方法,可以通過self,訪問自己的屬性,呼叫自己的方法

由此得出結論:

1)每個物件都有自己獨立的記憶體空間,儲存各自不同的屬性

2)多個物件的方法,在記憶體中只有一份,在呼叫方法時,需要把物件的引用傳遞到方法內部

四、靜態方法

在開發中,如果需要在類中封裝一個方法,這個方法既不需要訪問例項屬性或者呼叫例項方法,也不需要訪問類屬性或者呼叫類方法,這個時候,我們就可以把這個方法封裝成一個靜態方法

五、例項:

1.設計一個Game類
2.屬性
    定義一個類屬性top_score記錄遊戲的歷史最高分(與這個遊戲有關,每次遊戲的時候與遊戲最高分無關)
    定義一個例項屬性player_name記錄當前遊戲玩家的玩家姓名
3.方法:
    靜態方法show_help顯示遊戲幫助資訊(即不需要訪問類屬性,也不需要訪問例項熟悉)
    類方法show_top_score顯示歷史最高分(訪問類屬性)
    例項方法start_game開始當前玩家的遊戲

1)檢視幫助資訊
2)檢視歷史最高分
3)建立遊戲物件,開始遊戲

案例小結:
1.例項方法--方法內部需要訪問例項屬性
    例項方法內部可以使用 類名. 訪問類屬性
2.類方法:方法內部“只”需要訪問類屬性
3.靜態方法:方法內部,不需要訪問例項屬性和類屬性

提問:
如果方法內部 即需要訪問例項屬性,又需要訪問類屬性,應該定義什麼方法?
答案:
應該定義例項方法
因為,類只有一個,在例項方法內部可以使用類名,訪問類屬性