Python面向对象13.多继承

一、引入

应该听说过狮虎兽吧,它是狮子与老虎2种动物杂交出现的新物种

再比如骡子是由驴与马2种动物杂交出现的新物种

之所以用上述的2种杂交动物来开场,是因为要讲解的多继承其实就有点杂交的意思

什么是多继承?

如果一个类继承了多个父类,那么这就是多继承

二、定义格式

单继承时在类()中写1个父类的名字,那么多继承就需要在()中写多个父类的名字而且用英文逗号,进行分割

class A:
    pass


class B:
    pass


class C(A, B):  # 继承了A、B类
    pass

  

 

三、应用

我们都知道今天的手机功能已经非常全面了,而且还在突风猛进的进化中,不仅有电话功能还有照相功能(参照照相机)、播放音乐(参照MP3)等,下面我们通过一步步的展示方式来揭晓多继承的真实作用价值所在

首先我们定义一个普通的手机Telephone(即很久之前的功能机)

class Telephone:
    def call(self):
        """打电话"""
        print("正在打电话...")

    def answer(self):
        """接电话"""
        print("正在接电话...")

  

 

如果我们想要让手机拥有照相机的功能,此时就需要定义一个照相机类Camera

class Camera:
    def take_photo(self):
        """拍照功能"""
        print("正在拍照...")

  

 

然后让Telephone继承Camera

class Camera:
    def take_photo(self):
        """拍照功能"""
        print("正在拍照...")


class Telephone(Camera):
    def call(self):
        """打电话"""
        print("正在打电话...")

    def answer(self):
        """接电话"""
        print("正在接电话...")

  

 

然后创建一个手机对象,此时就手机就继承了拍照功能

class Camera:
    def take_photo(self):
        """拍照功能"""
        print("正在拍照...")


class Telephone(Camera):
    def call(self):
        """打电话"""
        print("正在打电话...")

    def answer(self):
        """接电话"""
        print("正在接电话...")


iiphone = Telephone()
iiphone.call()
iiphone.answer()
iiphone.take_photo()

  

 

运行之后的效果如下:

正在打电话...
正在接电话...
正在拍照...

  

 

如果想要让手机拥有听音乐的功能,我们可以定义一个MP3

class MP3:
    def play_music(self):
        """播放音乐功能"""
        print("正在播放音乐...")

  

 

最后让手机Telephone类继承MP3类

class Camera:
    def take_photo(self):
        """拍照功能"""
        print("正在拍照...")


class MP3:
    def play_music(self):
        """播放音乐功能"""
        print("正在播放音乐...")


class Telephone(Camera, MP3):
    def call(self):
        """打电话"""
        print("正在打电话...")

    def answer(self):
        """接电话"""
        print("正在接电话...")


iiphone = Telephone()
iiphone.call()
iiphone.answer()
iiphone.take_photo()
iiphone.play_music()

  

 

带有音乐功能的手机就做好了,试试看

正在打电话...
正在接电话...
正在拍照...
正在播放音乐...

  

 
原文地址:https://www.cnblogs.com/dong4716138/p/15747810.html