Python 教程 - 類繼承
Jinku Hu
2023年1月30日
在本節中,你將學習 Python 物件導向程式設計的類繼承。
在繼承中,從父類建立子類。子類繼承父類的所有內容(資料成員和成員函式)。
以下是 Python 中繼承的語法:
class ParentClass:
# members
class ChildClass(ParentClass):
# members
在子類中,它具有父類的所有函式,還可以新增新函式。
像下面的示例一樣,它具有一個名為 Auto
的父類,並且 car
是從 Auto
繼承的一個子類。
>>> class Auto:
def __init__(self, e, n):
self.engine = e
self.name = n
def display(self):
print("Name of Auto: ", self.name)
print("Engine of auto: ", self.engine)
>>> class Car(Auto):
def __init__(self):
self.x= input("Enter name of car: ")
self.y= input("Enter engine of car: ")
Auto.__init__(self,self.y,self.x)
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
Name of Auto: Prius
Engine of auto: 1.5l
你可以在此處看到可以在 Auto
類中使用 Car
類中的方法。因為 Car
是從 Auto
繼承的。
在 Car
的建構函式內部,呼叫 Auto
的建構函式。Car
的物件可呼叫 Auto
的所有方法。
Python 類繼承方法重寫
當子類和父類具有相同的方法時,它就是引起了方法重寫。方法重寫本質上是一個概念,其中子類更改其父類的方法的實現。
考慮以下示例,其中子類 Car
與 Auto
類中都有相同名稱的 display
方法,但是其實現已更改:
>>> class Auto:
def __init__(self, e, n):
self.engine = e
self.name = n
def display(self):
print("Name of Auto: ", self.name)
print("Engine of auto: ", self.engine)
>>> class Car(Auto):
def __init__(self):
self.x= input("Enter name of car: ")
self.y= input("Enter engine of car: ")
Auto.__init__(self,self.y,self.x)
def display(self):
print("You are in child class")
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
You are in child class
因此,現在在 c
物件中呼叫 display
方法時,將呼叫子類的方法。
Python 類多重繼承
當一個子類有多個父類時,就會發生多重繼承。每個父類的功能均由子類繼承。
以下是多重繼承的語法:
class A:
# members
class B:
# members
class child(A, B):
# members
例:
>>> class A:
def dispA(self):
print('You are in class A')
>>> class B:
def dispB(self):
print('You are in class B')
>>> class C(A, B):
def dispC(self):
print('You are in class C')
>>> Cobj = C()
>>> Cobj.dispA()
You are in class A
>>> Cobj.dispB()
You are in class B
>>> Cobj.dispC()
You are in class C
應當注意,C
(子類)的物件可以呼叫其父類 A
和 B
的方法。因此,可以說 C
繼承了 A
和 B
的所有內容。
Python 類多級繼承
多級繼承是指你從另一個子類繼承一個子類。
多級繼承的語法如下:
class A:
# members
class B(A):
# members
class C(B):
# members
例:
>>> class A:
def dispA(self):
print('You are in class A')
>>> class B(A):
def dispB(self):
print('You are in class B')
>>> class C(B):
def dispC(self):
print('You are in class C')
>>> Cobj = C()
>>> Cobj.dispA()
You are in class A
>>> Cobj.dispB()
You are in class B
>>> Cobj.dispC()
You are in class C
你可以在此處看到 C
類可以呼叫其父類和祖父母類的方法。