打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
第13关课后习题讲解

###

来简单的讲一下13关的习题吧,13关我们学到的主要知识就是 【类的继承】

考虑到同学们对继承逻辑的理解会稍微比较绕,所以13关的习题也设置得比较简单,目的也是让同学们以最直观的方式进行继承的操作

而稍微复杂的操作,我们会在14关的实操课中去学习

###

来看习题,第一个目标和要求

这个题目在练习中已经给出了代码,但是同学们也要理解

首先这里Teacher类和Father类个字有两个属性,其中一个同名属性face

我们用time1 和 time2分别对两个类进行实例化,再调用各自的face属性

记得在创建实例的时候,格式是 实例名 = 类()

括号不能丢

然后用 实例名.属性 的方式调用了类的属性,并用print进行打印

这一部分逻辑实现很简单,应该不难理解吧

###

第二部分,课程要求是

代码如下

###

我们先定义了

class TeacherMore(Teacher, Father): 

 pass

这里按照多重继承的逻辑,会优先继承Teacher这个父类,在这个类下,pass的意思是完全继承,不做修改

###

再,我们定义了

class FatherMore(Father, Teacher):

    face = 'gentle'

###

这里按照多重继承的逻辑,会优先继承Father这个父类,在这个类下,对属性face进行了重新赋值,修改为'gentle’

我们用time3 和 time4分别对两个子类进行实例化,再调用各自的face属性

time3是子类TeacherMore()的实例,因为没有重新赋值face,所以优先继承了Teacher这个父类的face属性,打印为serious

time4是子类FatherMore()的实例,因为重新赋值了face,所以此时打印重新赋值后的face属性,打印为gentle

###

这个练习有没有疑问呢?

###

没有的话,助教继续讲第二个进阶练习

先看初级版本,在类下两个方法,一个初始化方法,一个普通方法

初始化参数的作用是一般会用来执行一些默认的操作,比如把参数赋值,这样当调用类的时候,则默认执行初始化函数,不用手动进行调用

而普通方法则是实现特定功能的调用,这里的count_time()则用来计算效率

同学会问,为什么在init里,要重新把参数赋值给变量呢,self.的作用是什么

这里对参数重新赋值到一个变量,目的是为了在其他的类方法进行调用,只有加了self.前缀的才能进行调用哦

如果没有加self. , 则只能在该方法下使用

看第一个实例,调用了类Student,并传入了一个参数给name

在init中,因为其他的参数都是默认参数,所以调用的时候只传参给name即可

第二步,实例student1调用类方法count_time()并传入两个参数,并打印属性self.time_effective,具体逻辑如上图

在实例调用某个属性的时候,格式是 实例名.属性名,此时不用加self.

###

接下来是升级版

子类Programmer()继承了父类Student(),并进行了类方法的重写(定制)

子类重写初始化函数,修改了原参数中job的默认值,并在在函数下调用了父类的初始化函数,参数传递如上图

子类重写count_time方法,修改了原参数中rate的默认值,参数传递如上图

创建实例student1和student2,参数传递如上图

实例student1和student2分别调用count_time()方法,参数传递如上图

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
一文看懂Python面向对象编程核心思想(Python学习与Django入门必看)
Python3学习笔记(三)
python 特性slots槽详解
泛型与反射
零基础学JAVA之JAVA面向对象入门第一季
子类对象的实例化过程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服