Python类的派生与继承
来自CloudWiki
派生与继承
继承就是子类继承父类的特征和行为,使得代码能够复用;
声明继承之后,子类(派生类)就可以使用父类所有的变量和方法;
如果有变量和方法父类当中不存在,子类可以自己定义。
定义一个学生类Student,包含姓名name,性别gender,年龄age,还包含所学专业major,所在系别dept,那么就不必要重新定义Student类,只要从已经定义的Person类派生与继承过来就是了。
例如:
Person类
class Person: def __init__(self,name,gender,age): self.name=name self.gender=gender self.age=age def show(self,end='\n'): print(self.name,self.gender,self.age,end=end)
Student类
class Student(Person): def __init__(self,name,gender,age,major,dept): Person.__init__(self,name,gender,age) self.major=major self.dept=dept if __name__ =="__main__": s=Student("james","male",20,"software","computer") s.show()
继承类构造函数
从上面的Student类的定义可以看出派生类的构造函数除了要完成自己的新增加的major,dept属性的初始化外,还要调用基类Person的构造函数,而且还要显示调用,即:
Person.__init__(self,name,gender,age)
通过类名称Person直接调用Person的__init__函数,并提供所要的4个参数。继承类是不会自动调用基类的构造函数的,必须显示调用。
在python中继承中的一些特点:
- 在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。有别于C#
- 在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
- Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)