一、引入
应该听说过狮虎兽
吧,它是狮子与老虎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()
带有音乐功能的手机就做好了,试试看
正在打电话... 正在接电话... 正在拍照... 正在播放音乐...