小编给大家分享一下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的子类。