【问题描述】IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
请开发一个学生信息类,再创建一个具体的学生对象,最后再输出该对象的信息。学生信息包含学号、姓名、性别、班级,需要的操作是显示学生信息。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
输出结果:IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
0001 张磊 男 2021级计算机1班IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【题前思考】IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
根据问题描述,填写表6-1-1。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表6-1-1 问题分析IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【解题思路】IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
定义类首先需要分析类的属性和方法。属性就是反映对象特征的数据信息,从题目要求来看,学生信息类中应该包括sno(学号)、name(姓名)、sex(性别)、clsname(班级)4个属性。方法就是对象执行的操作,学生信息类要执行的操作就是显示学生信息。Student类的结构如图6-1-1所示。Python提供了定义类、属性和方法的语法。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
图6-1-1 Student类对象结构图IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【程序代码】IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【代码分析】IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
①:定义类Student。格式:class类名:,冒号下属于类定义的代码要缩进。注意类名的首字母大写,建议采用驼峰式命名法。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
②:定义方法__init__(self,sno,name,sex,clsname)。__init__( )是类的初始化方法,当使用类名创建对象时就会调用__init__()方法,创建对象时使用的参数也会传递给__init__( )方法,如图6-1-2所示。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
图6-1-2 创建对象时调用类的__init__( )方法IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
__init__( )的参数给对象提供了初始数据,通常在这个方法中定义和初始化属性。第一个参数self是“自己”的意思,即这个对象本身,除了__init__( )方法,每个实例方法的第一个参数都是self。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
在这个程序中,依次将参数sno、name、sex和clsname的值赋给这个对象的属性sno、__name、sex和clsname,其中sno是学号、name是姓名、sex是性别、clsname是班级名称。要注意属性名前的self,如self.sno表示这个对象的sno属性,而sno表示的是参数sno。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
③:self.__name中,属性名前两条前置的下划线,表示私有属性,只能在类内部使用,类外部包括子类都不能访问。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
④:定义方法show(self)显示学生信息。通过实例调用该方法时,self是指对象本身,即显示这个对象的信息。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
⑤:调用Student类创建对象stu,此时会调用__init__(self,sno,name,sex,clsname)方法,初始化stu对象。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
⑥:调用stu对象的show( )方法显示stu这个学生的信息。在程序中使用对象的属性和方法的格式为“对象.属性”和“对象.方法”。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【优化提升】IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
回顾在实例化Student类的时候,我们定义了一个私有属性self.__name,它无法在类外部直接访问。但是有的时候我们又需要在外部访问它,这个时候我们可以借助修饰器@property将类的方法“伪装”成属性。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
通过以上操作,stu.name可以获得属性的值,但属性值不能被修改。想要修改属性值,可以使用修饰器@name.setter。通过这种方式,我们不仅可以设置属性的值,还可以检查值的合法性。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【技术全貌】IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
在创建类时,我们要理解类、对象、属性、方法的概念,见表6-1-2;定义类、实例化对象、使用对象的属性与方法见表6-1-3。IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表6-1-2 关于类的常用概念IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表6-1-3 定义和使用类IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
续表IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
IzC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库