# Python 自訂類別 (Class) > 作者:王一哲 > 日期:2022/12/21 <br /> ## 基本觀念 如果想要在 Python 程式中產生許多相似的物件,而且我們還想要在這些物件中自訂函式,就可以使用 class 來達成目的,通常 class 的名稱開頭為大寫字母。如果不繼承其它的 class 語法如下 ```python class 名稱: def __init__(self, 參數1, 參數2, ...): self.參數1 = 參數1 self.參數2 = 參數2 ... def 函式1(參數): return 回傳值1 # 若無回傳值則可省略此行 def 函式2(參數): return 回傳值2 # 若無回傳值則可省略此行 ``` <br /> 使用這個 class 建立物件時,需要輸入自訂函式 \_\_init\_\_ 括號內除了 self 以外的參數,接下來會自動執行 \_\_init\_\_ 的內容。 <br /> 如果繼承其它的 class 則語法為: ```python class 名稱(來源): def 函式1(參數): return 回傳值1 def 函式2(參數): return 回傳值2 ``` <br /><br /> ## 自訂 Class 實例 我們自訂一個 class,名稱為 Student,使用時需要輸入的參數為 name、number、chinese、english、math、physics、chemistry,接下來會自動執行 \_\_init\_\_ 的內容,並將參數 name 的值指定給 self.name,將參數 number 的值指定給 self.number,將參數 chinese、english、math、physics、chemistry 的值指定給用來儲存各科成績的串列 self.scores。同時定義了以下4個函式: 1. 印出名稱的 printName 2. 印出號碼的 printNumber 3. 印出各科成績的 printScore 4. 印出平均分數的 printAverage,引用時會回傳平均分數。 ```python= class Student: def __init__(self, name, number, chinese, english, math, physics, chemistry): self.name = name self.number = number self.scores = [chinese, english, math, physics, chemistry] def printName(self): print("Name: {:s}".format(self.name)) def printNumber(self): print("Number: {:d}".format(self.number)) def printScore(self): print("Chinese\tEnglish\tMath\tPhysics\tChemistry") for score in self.scores: print(score, end='\t') print("") def printAverage(self): average = sum(self.scores)/len(self.scores) print("Average: {:.2f}".format(average)) return average ``` <br /> 若用 Student 建立物件 student1 ```python student1 = Student("John", 1, 80.1, 71.2, 75.3, 85.7, 82.6) ``` <br /> 輸入 ```python student1.printName() ``` 執行結果為 ```python Name: John ``` <br /> 輸入 ```python student1.printNumber() ``` 執行結果為 ```python Number: 1 ``` <br /> 輸入 ```python student1.printScore() ``` 執行結果為 ```python Chinese English Math Physics Chemistry 80.1 71.2 75.3 85.7 82.6 ``` <br /> 輸入 ```python avg1 = student1.printAverage() ``` 執行結果為 ```python Average: 78.98 ``` <br /> 輸入 ```python print(avg1) ``` 執行結果為 ```python 78.97999999999999 ``` <br /> ## 結語 這是自訂 class 最簡單的說明及應用,雖然目前看起來似乎功能並不強大,但是在需要定義大量且相同類型的物件時非常有用。 <br /> --- ###### tags:`Python`