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()
带有音乐功能的手机就做好了,试试看
正在打电话... 正在接电话... 正在拍照... 正在播放音乐...