Python 教程 - 類繼承

Jinku Hu 2023年1月30日 2019年12月26日
  1. Python 類繼承方法重寫
  2. Python 類多重繼承
  3. Python 類多級繼承
Python 教程 - 類繼承

在本節中,你將學習 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 類繼承方法重寫

當子類和父類具有相同的方法時,它就是引起了方法重寫。方法重寫本質上是一個概念,其中子類更改其父類的方法的實現。

考慮以下示例,其中子類 CarAuto 類中都有相同名稱的 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 (子類)的物件可以呼叫其父類 AB 的方法。因此,可以說 C 繼承了 AB 的所有內容。

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 類可以呼叫其父類和祖父母類的方法。

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn