python中的继承是什么意思

  介绍

小编给大家分享一下python中的继承是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家学习,希望大家阅读完这篇文章后大所收获、下面让我们一起去学习方法吧!

面向对象语言的一个特性就是类的继承。继承的关系跟人类繁衍的关系相似,被继承的类称为基类(也叫做父类),继承而得的类叫派生类(也叫子类),这种关系就像人类的父子关系。

类的继承,说明了不同类直接的关系,派生类复用了基类的代码同时也继承了基类的属性和方法。派生类定义的语法如下:

<强>派生类的定义

class  DerivedClassName (BaseClassName):   ,,,语句1   ,,,…   ,,,语句n

下面我们根据这个语法来写一个继承的例子:

class 人:   ,,,def  __init__(自我,,名字,,年龄,身高):   ,,,,,,,self.name =,名字   ,,,,,,,self.age =,年龄   ,,,,,,,self.height =,高度   ,,,def 看(自我):   ,,,,,,,印刷(self.name, & # 39; is 看# 39;)   ,,,def 走(自我):   ,,,,,,,印刷(self.name, & # 39; is 走# 39;)   class 老师(人):   ,,,def  __init__(自我,,名字,,年龄,身高):   ,,,,,,,超级(). __init__(姓名,年龄,身高)   ,,,def 教(自我):   ,,,,,,,印刷(self.name, & # 39; is 教学# 39;)   class 学生(人):   ,,,def  __init__(自我,,名字,,年龄,身高):   ,,,,,,,超级(). __init__(姓名,年龄,身高)   ,,,def 学习(自我):   ,,,,,,,印刷(self.name, & # 39; is 学习# 39;)   if  __name__ ==, & # 39; __main__ # 39;:   ,,,teacher =,老师(& # 39;汤姆# 39;,,31日,178)   ,,,s1 =,学生(& # 39;吉姆# 39;,,12日,160)   ,,,s2 =,学生(& # 39;金# 39;,,13日,162)   ,,,teacher.look ()   ,,,teacher.walk ()   ,,,teacher.teach ()   ,,,print (& # 39;===& # 39; * 5)   ,,,s1.look ()   ,,,s1.walk ()   ,,,s1.learn ()   ,,,print (& # 39;===& # 39; * 5)   ,,,s2.look ()   ,,,s2.walk ()   ,,,s2.learn ()

我们定义了一个基类的人,这个人有名字(名字),年龄(年龄)和身高(高度)三个属性,还看起来有()、()走两个方法。由它派生出两个类:老师和学生,这两个派生类继承了名字,年龄,身高属性,也继承了(),()走方法。但它们又有自己独有的方法,可老师以教(),学生可以学习()。

运行这个示例代码,可以得到下面的信息:

Tom  is 寻找   Tom  is 步行   Tom  is 教学===============Jim  is 寻找   Jim  is 步行   Jim  is 学习===============Kim  is 寻找   Kim  is 步行   Kim  is 学习

派生类定义的执行过程与基类相同。当构造类对象时,基类会被记住。此信息将被用来解析属性引用:如果请求的属性在类中找不到,搜索将转往基类中进行查找。如果基类本身也派生自其他某个类,则此规则将被递归地应用。

派生类的实例化会创建该类的一个新实例。方法引用将按以下方式解析:搜索相应的类属性,如果搜索的方法在派生类中找不到,就去基类中进行查找,如果基类本身也派生自其它类,则此规则将被递归地应用。如果搜索到了一个函数对象则方法引用就生效。

比如,教师中并没有定义看(),当我们调用方法teacher.look()的时候会在它的基类人中找到并调用()。

<强>重载基类方法

派生类可以重载基类的方法。重载,就是重新定义。如果派生类中重新定义了基类的某方法,那么派生类的重载的这个方法就会覆盖基类中的同名方法。

例如,我们定义学生时可以重载走()方法,让它拥有学生特征:

class 学生(人):   ,,,def  __init__(自我,,名字,,年龄,身高):   ,,,,,,,超级(). __init__(姓名,年龄,身高)   ,,,def 学习(自我):   ,,,,,,,印刷(self.name, & # 39; is 学习# 39;)   ,,,def 走(自我):   ,,,,,,,印刷(& # 39;学生:& # 39;,,self.name,, & # 39; is 走# 39;)

再次运行s1.walk()时,就会打印下面的信息:

学生:吉姆走

Python有两个内置函数可被用于检查继承机制:

isinstance()来检查一个实例的类型:isinstance (obj, int)仅仅会在obj.__class__为int或某个派生自int的类时为True.issubclass()来检查类的继承关系:issubclass (bool, int)为真,因为bool是int的子类。但是,issubclass(浮动,int)为假,因为不浮动是int的子类。

python中的继承是什么意思