二十一、面向对象3—继承:重写、调用父类的两种方法、super()、isinstance(obj, Class) 、多继承、私有的属性和方法的调用

一、继承的示例:

二、子类继承父类、父类的父类

三、在子类中重写父类的方法

在子类中再写一个父类有的方法,就会先使用自身类的方法,如果自身没有该方法,则会使用父类的方法。

调用的顺序:会先使用自身类的方法,如果自身没有该方法,则会使用父类的方法。

四、在子类中调用被重写的父类的方法(两种方法)

(1)第一种方法:   类名.方法名(self)             【类名:可父类可子类,再找相对应的方法调用

如果自身有这个方法,先调自身的,打印出来,再执行    类名.方法名(self)   调(父类)的方法打印出来。

注意:在子类中调用被重写的父类的方法时,需要传递代表自身的self,否则会报错的

(2)第二种方法:

在父类中为不同的子类返回不同的数据信息:用super() 和 isinstance(obj, Class) 布尔函数

super().drink()   在子类中调用父类的方法

super(B,self).aaa(self)   #B是处在当前的类,aaa方法后面的self可根据情况传与不传,不一定非得传self,也可传10,”B”之类                                              的,视情况而定。

super(C,self).aaa(self)

isinstance(obj, Class) 布尔函数:如果object是B类的实例对象,那么就返回真True。

isinstance(obj, Class) 布尔函数:如果object是一个A类的子类的实例对象则返回true。

五、知识点补充:Python super() 函数

super() 函数是用于调用父类(超类)的一个方法

super 也是可以用来解决多重继承问题,这样父类就可以区分哪个子类调用了父类的方法。

六、issubclass(B,A)       判断B是否是A的子类,如果是返回True

七、私有方法、私有属性在继承中的表现

总结:

1、私有的属性和方法并不会被继承,只要是私有的东西就不会被继承的,也就是不能在子类中使用父类中的私有方法和私有属性。

2、私有的属性和方法只能在定义它们的类中公开一个方法里面调用,不能在子类中使用父类中的私有方法和私有属性。

八、多继承

所谓多继承,即子类有多个父类,并且具有它们的特征。

python是可以多继承的父类中的方法、属性,子类会继承

object类是所有类的基类,下面的object写与不写是一样的。

print(C.__mro__)          C3算法,决定调用一个方法的时候,搜索的顺序,如果在某个类中找到了方法就停止搜索。

注意点:

 

猜你喜欢

转载自blog.csdn.net/xk1761299425/article/details/81319278