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

时间: 2023-07-29 admin 互联网

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

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

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):passc = C()
c.test()
c.demo()


注意:如果父类中存在同名的方法,在最后调用的时候谁在前调用谁的方法。

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

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

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