本文共 1537 字,大约阅读时间需要 5 分钟。
本文我们学习面向对象的程序设计,先学习几个基本概念。
对象包含2种特征:状态和行为。
类:某种类型集合的描述
属性:是类本身的一些特性,属性具体值则会根据每个对象的不同而不同。 方法:类所能实现的行为。 类的定义: class className[(父类名)]: 成员变量 成员函数 父类名是可选的,子类继承父类后,子类将拥有父类的相应属性和方法。 用类定义对象,先调用__init__构造函数,用于初始化对象的各个属性。 销毁对象时,用__del__析构函数。定义类的成员函数时,必须默认一个变量来代表类定义的对象本身,这个变量的名称可自行定义,下面的例子将使用self变量表示类对象的变量。
我们通过学生成绩计算来举例说明类的定义和数据操作。
GPA计算以4分为准则,学生的成绩是“A”(即4点),“B”(即3点),“C”(即2点),“D”(即1点),“E”(即0点),GPA的计算如下:
由上图可知,GPA=(所有科目的总点数)/(总学分)。
记录学生成绩的文件包含多个学生的记录,每个记录为一行,包括该学生的姓名,总学分和量分数(即所有科目的总点数),学生成绩表如下:其中 ,第一列是姓名,第二列是某个学生所修课程的总学分,第三列是所修课程的总点数,GPA=(总点数)/(总学分)。
GPA算法描述如下:
下面的python3程序,通过读取文件,找出平均绩点最高的学生,然后输出他的姓名,总学分和平均绩点:
#找到GPA最高的学生
#创建一个Student类,每个Student类型的对象记录一个学生信息 class Student: def __init__(self,name,scores,qpoints): self.name=name self.scores=float(scores)#将字符串类型转换成float类型,便于做算术运算 self.qpoints=float(qpoints) def getName(self): return self.name def getScores(self): return self.scores def getQPoints(self): return self.qpoints def gpa(self): return self.qpoints/self.scores def makeStudent(infoString): name,scores,qpoints=infoString.split() return Student(name,scores,qpoints) def main(): #打开输入文件 fileName=input('Enter name of the grade file:') f=open(fileName,'r') #设置文件中第一个学生为best best=makeStudent(f.readline()) #处理文件中剩余的行数据 for line in f: #将文件中的每一行数据转换为一个学生对象 s=makeStudent(line) #如果该学生是目前GPA最高的,则记录下来 if s.gpa()>best.gpa(): best=s f.close() #打印GPA成绩最高的学生信息 print('The best student is:',best.getName()) print('scores:',best.getScores()) print('GPA:',best.gpa()) if __name__=='__main__': main() 运行程序,输入输出如下:最后,我们总结一下面向对象程序设计的基本步骤:
(完)