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