什麼是類,Python class類的定義

2020-07-16 10:05:26
Python 從設計之初就是一門物件導向的語言,Python 中的一切資料都是物件。

Python 中涉及物件導向的術語主要有:
  • 類:用來描述具有相同的屬性和方法的物件的集合,定義了該集合中每個物件所共有的屬性和方法。類是生成物件的“模板”;
  • 物件:通過類定義的資料結構範例。物件由類變數、範例變數和方法構成;
  • 資料成員:類變數或者範例變數,用於處理類及其範例物件的相關的資料,又稱屬性;
  • 類變數:同一個類的所有物件均可存取的變數,類變數在整個範例化的物件中是公用的。類變數定義在類中且在函數體之外。類變數通常不作為範例變數使用;
  • 範例變數:在類的宣告中,屬性是用變數來表示的。這種變數就稱為範例變數,是在類宣告的內部但是在類的其他成員方法之外宣告的;
  • 方法:類中定義的函數;
  • 範例化:建立一個類的範例,即生成類的一個具體物件;
  • 繼承:即一個派生類(Derived Class,也稱子類)繼承基礎類別(Base Class,也稱父類別)的欄位和方法。繼承也允許把一個派生類的物件作為一個基礎類別物件對待;
  • 方法重寫:在子類中定義與父類別同名的方法,這個過程稱為方法的重寫(Overwrite),又稱方法的覆蓋(Override)。

Python 中定義一個類的語法如下:

class 類名:
    <資料成員宣告 1>
    ...
    <資料成員宣告 N>


定義類後可以將其範例化得到一個物件,並通過操作物件完成目標任務,例如:
class Class1:
    i = 123
    def func1(self):
        return 'Hello there!'

x = Class1()
    print("Class1 類的屬性 i 為:", x.i)
    print("Class1 類的方法 func1() 輸出為:", x.func1())
上述程式碼的執行結果如下所示:

>>> class Class1:
...          i = 123
...          def func1(self):
...              return 'Hello there!'

>>> x = Class1()
>>> print("Class1 類的屬性 i 為:", x.i)
Class1 類的屬性 i 為: 123
>>> print("Class1 類的方法 func1() 輸出為:", x.func1())
Class1 類的方法 func1() 輸出為: Hello there!


類內部的變數分為類變數和範例變數兩種,類變數的定義和普通變數一樣,呼叫時使用的方式直接存取,類的範例也能存取類變數。範例變數則是以 self. 開頭,僅供各個範例物件使用。

類名.變數名


類內部的方法分為三種:
  • 實體方法:是指該類的每個範例都可以呼叫到的方法,只有範例能呼叫實體方法。與普通函數不同的是,實體方法有一個額外的第一個引數,其名稱按慣例是 self。
  • 類方法:是將類本身作為物件進行操作的方法,類本身和範例都可以呼叫類方法。定義時使用 @classmethod 進行裝飾,其第一個引數是類,名稱按慣例是 cls。實體方法和類方法都是依賴於 Python 的修飾器實現的。
  • 靜態方法:是一種存在於類中的普通函數,不會對任何範例型別進行操作,類本身和範例都可以呼叫靜態方法,定義時以 @staticmethod 進行裝飾宣告。