Last active 10 months ago

這段程式碼示範了 Python 的類別繼承機制,透過 Person(人)和 Employee(員工)類別,展現子類別如何繼承父類別的屬性與方法,並添加自己的功能。

Revision 1d08b938854220a166e34eca2bb7379b46ff36e7

person_employee_inheritance.py Raw
1# 定義 Person 類別
2class Person:
3 # 定義建構子
4 def __init__(self, name):
5 # 設定人的名字
6 self.name = name
7
8 # 定義取得人的名字的方法
9 def get_name(self):
10 """取得人的名字"""
11
12 # 回傳人的名字
13 return self.name
14
15
16# 定義 Employee 類別,繼承自 Person 類別
17class Employee(Person):
18 # 定義建構子
19 def __init__(self, name, staff_id):
20 # 呼叫父類別的建構子,設定人的名字
21 Person.__init__(self, name)
22 # 設定員工的員工編號
23 self.staff_id = staff_id
24
25 # 定義取得完整員工識別資料的方法
26 def get_full_id(self):
27 """取得完整員工識別資料"""
28 # 取得人的名字
29 name = self.get_name()
30 # 將人的名字與員工編號合併成員工的完整識別資料
31 full_id = name + ", " + self.staff_id
32
33 # 回傳員工的完整識別資料
34 return full_id
35
36
37# 建立一個 Person 物件,並設定名字為 Bill
38person = Person("Bill")
39
40# 建立一個 Employee 物件,並設定名字為 John、員工編號為 A23
41employee = Employee("John", "A23")
42
43# 測試 person 物件的 get_name 方法,應該回傳 Bill
44assert person.get_name() == "Bill"
45
46# 測試 employee 物件的 get_name 方法,應該回傳 John
47assert employee.get_name() == "John"
48
49# 測試 employee 物件的 get_full_id 方法,應該回傳 John, A23
50assert employee.get_full_id() == "John, A23"
51
52# 測試 Employee 類別是否為 employee 物件的父類別
53assert isinstance(employee, Employee)
54
55# 測試 Person 類別是否為 employee 物件的父類別
56assert not isinstance(person, Employee)
57
58# 測試 Person 類別是否為 person 物件的父類別
59assert isinstance(person, Person)
60
61# 測試 Person 類別是否為 employee 物件的父類別
62assert isinstance(employee, Person)
63
64# 測試 Employee 類別是否為 Person 類別的子類別
65assert issubclass(Employee, Person)
66
67# 測試 Person 類別是否為 Employee 類別的子類別
68assert not issubclass(Person, Employee)
69