添加父类需求的方法,多继承

1.覆盖父类方法
2.对父类方法进行扩展

class Animal:
    def eat(self):
        print('吃')
    def drink(self):
        print('喝')
    def run(self):
        print('跑')
    def sleep(self):
        print('睡')

class Cat(Animal):
    def call(self):
        print('喵喵~')

class Hellokitty(Cat):
    def speak(self):
        print('我可以说日语~')
    def call(self):
        # 调用原本在父类中封装的方法
        #Cat.call(self)
        super().call() # 只在python3中支持
        print('#@!#@!#@!')

hk = Hellokitty()
hk.speak()
hk.call()

多继承
子类拥有一个父类叫做单继承
子类可以拥有多个父类,并且具有所有父类的属性和方法
在这里插入图片描述

多继承的注意事项:
问题的提出:
如果不同的父类中存在同名的方法,子类对象在调用方法时,会调用哪一个父类中的方法呢?
提示:开发时,应尽量避免这种容易产生混淆的情况
如果父类之间存在同名的属性或方法,因该尽量避免使用多继承
例如:

class A:
    def test(self):
        print('A----test 方法')
    def demo(self):
        print('A----demo 方法')

class B:
    def test(self):
        print('B----test 方法')
    def demo(self):
        print('B----demo 方法')


class C(A,B):
    pass

c = C()
c.test()
c.demo()

在这里插入图片描述
注意:如果父类中存在同名的方法,在最后调用的时候谁在前调用谁的方法。

新式类和旧式(经典)类:
object是Python为所有对象提供的基类,提供有一些内置的属性和方法,可以使用dir函数查看
新式类:以object为基类的类,推荐使用
经典类:不以object为基类的类,不推荐使用
在python3.X中定义的类时,如果没有指定父类,会默认使用object作为基类–python3.x中定义的类都是新式类
在python2.x中定义类时,如果没有指定父类,则不会以object作为基类

推荐使用新式类
新式类和旧式类在多继承时—会影响到方法的搜索顺序

为保证编写的代码能够同时在python2.x和python3.x运行
今后在定义类时,如果没有父类,建议统一继承自object

猜你喜欢

转载自blog.csdn.net/qq_43279936/article/details/85332667
今日推荐