本教程使用的课本是《Python编程:从入门到实践》,作者:[美]EricMatthes
所谓的继承,就像是复制,子类继承父类后就自动拥有了父类的所有方法和属性。
一、继承的方法
我们之前写了一个模拟狗的类,现在我们想模拟藏獒,就可以不用重新写代码,直接继承狗这个类,这样藏獒这个类就自动有了狗的属性和方法,请看下面的代码:
classDog():模拟一只狗def__init__(self,name,age):在生成狗的时候设置相关属性self.name=nameself.age=ageprint(报告主人!我的名字叫+self.name+我今年+age+岁了!)defsit(self):模拟小狗坐下的动作print(self.name+已经坐下了!)classZangao(Dog):藏獒,继承了狗的属性
为了方便组织代码,我新建了一个称谓dog.py的文件,里面存放了狗的定义和藏獒的定义。如果主程序要使用这两个类,就使用import语句导入,导入方法和导入函数一样。
上面的代码,藏獒的定义只有一句话:
classZangao(Dog):
括号中有个Dog代表继承Dog类,主程序只有两句代码,见下面截图。我们执行一下主程序,会发现有信息打印出来。我们并没有在Zangao这个类写print语句,这个信息是从哪里来的?这个信息就是Zangao类继承了父类Dog的__init__()函数,所以当它在实例化的时候,也会自动执行继承过来的__init__()函数,因此会有信息打印出来。大家还可以试试打印出name和age属性。
二、重写父类的方法
子类可以重写父类的所有方法,只要求方法定义和和父类的定义一样。重写后,父类的方法将不再起作用,包括重写__init__()方法,重写这个方法有点特殊,要单独说一下:
classZangao(Dog):藏獒,继承了狗的属性def__init__(self,name,age):super().__init__(name,age)self.bplace=西藏
重写的__init__()方法中,super()函数的作用是引用父类的方法,执行一遍。因为父类的__init__()方法自带有self参数,因此执行时会在子类添加self.name和self.age属性,子类便有了这两个属性。
我们另外加了一个属性self.bplace表示出生地。通过打印这些属性,发现子类的确成功继承了父类。
当然,我们也可以不使用super()函数,将父类的__init__()方法重写一遍,也是一样的,但是这样体现不出继承的优势。
我们重写一下其他的方法,如sit()方法,执行结果如下:
三、增加子类的属性
我们在上面的例子其实已经增加了一个子类的新属性self.bplace,一般新属性都加在__init__()函数里面,因为它在类实例化的时候会自动赋值,非常方便。在其他的方法中也能增加属性,前提是要手动执行那个方法,但一般不那么操作。
四、Python标准库
Python自带了很多的类,安装的Python后都自带的。具体的使用方法,我们可以在pymotw这个网站上查到。
#Python入门教程#
长按文末点赞送三连,支持本文作者多写点~