Python 类(三)

上次作业的参考答案,请对照:

迄今为止,我们还没有涉及到模块等知识,所以,不理解 import 情有可原。import math 就是导入math这个模块,里面有sqrt()求平方根函数。关于导入等,会在今后讲解。

列表解析式我们提到过,但如果没有充分练习,也无法轻易掌握。x for x in 。。。就是列表解析式。整体代码就是产生一个新的列表,注意模仿。

for循环里面的主体括号太多,可以分开来写,只不过多用写变量吧了,试一下吧。

下面是本次的测试:

原题较为复杂,现在简化如下,现在给你两个数,3, 5,请创建一个嵌套的列表,大列表里面有 3 个小列表,每个小列表有 5 个元素。元素下标[i j] 的值是 i * j; i 取值 range(3); j 取值 range(5)。如果熟练了,可以设 x y 任意两个从键盘输入的数,当然数字不要太大。

今天讲类的继承,然后类就告一段落,关键是练习,这个类不容易掌握,过些日子,再回头学习。

用类的好处之一就是代码的重用,我们用继承机制就是重用代码的一个重要方式。继续就相当于在类里,类型和子类型的关系。

假设,我们要编程来记录学校里面教师和学生的情况。教师和学生都有共同的特征,比如姓名,年龄,住址等。也有不同的特征,比如教师有工资,课程,年假,而学生有考试分数,学费等。

你当然可以创建两个类,分别用于教师和学生。但很快,这会证明是个不明智的做法。

其实可以创建一个共同的类,比如叫做学校成员,或更广阔的类叫做人。然后教师和学生类来“继承”这个共同类。而教师和学生类成为学校成员类的子类。然后在子类中加上具体独特的特征。

这有几个好处,比如,当我们增加、变化学校成员的类中的功能时,就直接在子类中得到反映应用。举例,你可以加上身份证号码到学校成员类中,教师和学生类立即可以使用。但如果仅仅想变化一个子类,那么就只在那个子类中变化,而不影响其他子类。其他方面的好处暂时不讨论。

SchoolMember 成为基类或超类,Teacher 和 Student 类叫衍生类或叫子类。我们看例子:

解释:

继承的基类放在括号里,或者说是放在子类名后面的元组内。

基类的方法是通过变量被显式调用的,因为我们在和子类中定义了方法,Python 不会自动调用基类的构造函数,你必须自己显式地调用它。

相反,如果我们没有在一个子类中定义一个方法,Python 将会自动调用基类的构造函数。请注意,这是通过在方法名前面加上基类名作为前缀,再传入和其余变量,来调用基类的方法。

使用 类的 方法时,我们可将 或 的实例看作 的实例。被调用的是子类型的方法,而不是的方法。理解这一问题的一种思路是 Python总会从当前的实际类型中开始寻找方法,在本例中即是如此。如果它找不到对应的方法,它就会在该类所属的基本类中依顺序逐个寻找属于基本类的方法,这个基本类是在定义子类时在元组中指定的(其实可以认为是括号)。

这里有一条有关术语的注释——如果继承元组(Inheritance Tuple)中有超过一个类,这种情况就会被称作多重继承(Multiple Inheritance)。

参数用在超类的 方法中的 函数,目的是打印一行,并允许下一次继续打印在同一行。这是让 不换行的技巧。

好了,类还有其他内容,但这些已经足够一个初学者的学习的了。我琢磨琢磨如何练习类吧。也许会找些题目仔细讲解讲解。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190131G18EO700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券