版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8435759项目六
面向对象程序设计思想在学生成绩管理系统中的应用xx学院-XX学院《python程序设计》
函数与模块e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF课前复习:1.Python参数传递有位置参数:按照顺序传递参数;关键字参数:通过参数名传递参数,可以增加代码的可读性;默认参数:为参数设置默认值,当调用函数时没有提供该参数时,将使用默认值;可变参数:使用*args和**kwargs来传递任意数量的位置参数和关键字参数。2.Python作用域包含局部变量:在函数内部定义的变量,只能在该函数内部访问;全局变量:在函数外部定义的变量,可以在函数内部访问和修改(但通常不推荐这样做,以避免代码难以维护);还可以用嵌套函数:函数内部定义的函数,可以访问外部函数的局部变量(非局部变量)。3.模块的导入方式:import模块名:导入整个模块。from模块名import成员名:导入模块中的某个部分。import模块名as别名:给模块起一个简短的别名。from模块名import*:导入模块中的所有内容(不推荐,容易引起命名冲突)。
函数与模块e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF课前复习:4.模块分类可以分为内置模块:Python自带的模块,如math、os、datetime等。标准库模块:Python安装完成后就可以使用的模块,这些模块提供了丰富的功能,如文件操作、网络通信等。第三方模块:需要下载安装后才能使用的模块,如requests、numpy等。自定义模块:用户自己编写的模块。5.包是包含多个模块的目录,它用于组织模块。包的本质是一个包含__init__.py文件的文件夹。包的作用是当项目变得复杂时,仅靠模块已经无法满足代码组织的需要。这时,可以通过包将相关的模块分组管理。e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF【项目综述】前面各项目的学生成绩管理系统程序均是采用面向过程的程序设计思想编写的,随着编程技术发展,越来越多的编程语言开始支持面向对象编程范式。面向对象编程(Object-OrientedProgramming,OOP)的思想是在面向过程的基础上发展起来的。它强调将问题域中的实体和关系抽象成对象,并通过对象之间的交互和通信来实现程序的功能。本项目将学习Python向对象编程,并在此基础上改写和完善学生成绩管理系统。e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF【学习目标】能描述Python面向对象编程的特点、功能、应用领域、使用方法。能根据需求定义类解决常见生产和生活中的具体问题。能将Python面向对象编程应用到程序设计中,采用面向对象编程思想编写学生成绩管理系统程序。把“类与对象”的技术规则升华为社会规则意识,法律是规范,公民是实例。通过封装、继承、多态三大特性,引导学生树立“守法封装底线、诚信继承传统、公平多态共赢”的价值观,成长为遵纪守法、诚实守信的数字公民。e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF【重点和难点】【知识重点】1.Python面向对象的概念、特点、应用领域和使用方法。2.利用Python面向对象解决应用中的问题。【知识难点】1.Python面向对象的类和对象的概念,面向对象的特点。2.利用Python面向对象解决应用中的问题。e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF【学习内容】任务一
使用面向对象程序设计思想编写系统中的类和方法任务二
认识面向对象编程特点e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法在前面项目学习中,学生成绩管理系统程序的编写采用的是面向过程编程的思想编写的。Python是一个面向对象的编程语言,在Python中一切皆对象,因此采用面向对象编程思想编写学生成绩管理系统会更加更自然、直观,还能实现代码复用,减少冗余,同时提高代码的可读性和可维护性。本次任务将学习面向对象的基本概念、类的定义、对象的使用、实例方法、静态方法和类方法等内容,并在此基础上编写学生成绩管理系统中的类和方法。【任务描述】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法
面向过程编程(ProcedureOrientedProgramming,POP)是一种以事件为中心的编程思想。它主要围绕设计解题过程来进行,将问题分解成多个步骤,然后按照这些步骤逐一实现。
面向对象编程(Object-OrientedProgramming,OOP)的思想是在面向过程的基础上发展起来的。它强调将问题域中的实体和关系抽象成对象,并通过对象之间的交互和通信来实现程序的功能。面向对象编程是一种程序设计范式,它将数据(属性)和操作数据的方法(函数)封装在一起,形成一个独立的对象。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法1.认识面向对象
面向对象编程可以更好地模拟真实世界里的事物(将其视为对象),并把描述特征的数据和代码块(函数)封装到一起。
打个比方,若在某游戏中设计一个乌龟的角色,可以分为如下两个方面进行描述:从表面特征来描述,例如,绿色的、有4条腿、重10kg、有外壳等等。从所具有的行为来描述,例如,它会爬、会吃东西、会睡觉、会将头和四肢缩到壳里,等等。如果将乌龟用代码来表示,则其表面特征可以用变量来表示,其行为特征可以通过建立各种函数来表示【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法2.Python类的概念类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用,它提供了一种将数据和功能组合在一起的方式,其中,特征被称为属性,行为被称为方法。对象是由类创造出来的一个具体存在,可以直接使用,由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。所以,对象就相当于用图纸制造出来的飞机。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法3.Python类的定义Python类是由类头(class类名)和类体(统一缩进的变量和函数)构成。假设我们要创建一个表示“人”(Person)的类。每个人都有一个名字(name)和年龄(age),并且他们可以做一些事情,比如说话(speak)。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法3.Python类的定义根据定义属性位置的不同,类体中,在各个类方法之外定义的变量称为类属性或类变量,如role;类体中所有函数内部以“self.变量名”的方式定义的变量,称为实例属性或实例变量,如name和age;类体中所有函数内部以“变量名=变量值”的方式定义的变量,称为局部变量,如sex,定义局部变量是为了所在类方法功能的实现,局部变量只能用于所在函数中,函数执行完成后,局部变量也会被销毁。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法4.__init__()类构造方法在创建类时,init()方法是一个特殊的类实例方法,称为构造方法(或构造函数)。构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python解释器都会自动调用它。Python类中,手动添加构造方法的语法格式如下:def__init__(self,...):代码块注意,此方法开头和结尾各有2个下划线,且中间不能有空格。另外,__init__()方法可以包含多个参数,但必须包含一个名为self的参数,且必须作为第一个参数。也就是说,类的构造方法最少也要有一个self参数。例如Person类中构造方法有self、name和age实例变量参数。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法4.__init__()类构造方法注意,即便不手动为类添加任何构造方法,Python也会自动为类添加一个仅包含self参数的构造方法。仅包含self参数的__init__()构造方法,又称为类的默认构造方法。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法5.Python类的self参数在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将self参数作为方法的第一个参数。事实上,Python只是规定,无论是构造方法还是实例方法,最少要包含一个参数,并没有规定该参数的具体名称。Python会自动绑定类方法的第一个参数指向调用该方法的对象。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法5.Python类的self参数程序在调用实例方法和构造方法时,不需要手动为第一个参数传值。例如,创建实例对象并调用实例方法speak()【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法5.Python类的self参数例如,创建实例对象并调用实例方法speak(),speak()方法中的self代表该方法的调用者,即谁调用该方法,那么self就代表谁。因此,该程序的运行后打印出p1和p2对象本身。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法5.Python类的self参数除了类对象可以直接调用类方法,还可以通过变量调用对象中的方法。无论是类中的构造函数还是普通的类方法,实际调用它们的谁,则第一个参数self就代表谁。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法6.Python类对象的使用定义的类只有进行实例化,也就是使用该类创建对象之后,才能得到利用。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法6.Python类对象的使用还可以给类对象动态添加/删除变量。Python支持为已创建好的对象动态增加实例变量,方法也很简单,例如:通过直接增加一个新的实例变量并为其赋值,就成功地为p1对象添加了sex变量。既然能动态添加,那么是否能动态删除呢?答案是肯定的,使用del语句即可实现删除动态添加的变量。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法6.Python类对象的使用Python不仅允许为对象动态添加变量,也允许为对象动态增加方法。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法6.Python类对象的使用其实在应用中还可以借助types模块下的MethodType可以实现对象本身绑定,仍以bmi()函数为例说明。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法7.Python实例方法、静态方法和类方法和类属性一样,类方法也可以进行更细致的划分,具体可分为类方法、实例方法和静态方法。和类属性的分类不同,区分这三种类方法是非常简单的,即采用@classmethod修饰的方法为类方法;采用@staticmethod修饰的方法为静态方法;不用任何修饰的方法为实例方法。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法7.Python实例方法、静态方法和类方法(1)Python类实例方法通常情况下,在类中定义的方法默认都是实例方法。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法7.Python实例方法、静态方法和类方法(2)Python类方法Python类方法和实例方法相似,它最少也要包含一个参数,只不过类方法中通常将其命名为cls,【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法7.Python实例方法、静态方法和类方法(3)Python类静态方法静态方法,其实就是以前学过的函数,和函数唯一的区别是,静态方法定义在类这个空间(类命名空间)中,而函数则定义在程序所在的空间(全局命名空间)中。静态方法没有类似self、cls这样的特殊参数,因此Python解释器不会对它包含的参数做任何类或对象的绑定。也正因为如此,类的静态方法中无法调用任何类属性和类方法。静态方法需要使用@staticmethod修饰,例如定义的speak()方法。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法7.Python实例方法、静态方法和类方法(3)Python类静态方法静态方法需要使用@staticmethod修饰,例如定义的speak()方法。静态方法的调用,既可以使用类名,也可以使用类对象。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。1.定义工具类将工具函数封装到一个工具类中在项目五中将清洗用户输入的特殊字符和多余空格、姓名脱敏处理、成绩验证功能已经定义为函数,采用面向对象编程思想,可以将这些函数封装到类中。定义一个模块名称,例如utils.py保存工具函数,并命名工具的类名为Utils。具体代码参考教材P171:importreclassUtils:@staticmethoddefclean_input(text):"""清洗用户输入的特殊字符和多余空格"""cleaned=re.sub(r'[^\w\u4e00-\u9fa5]','',text.strip())return''.join(cleaned.split())@staticmethoddefdesensitize(name):"""姓名脱敏处理"""iflen(name)<2:returnnamereturnname[0]+'*'*(len(name)-1)@staticmethoddefvalidate_score(score):"""成绩验证(0-100的整数)"""returnre.match(r'^100$|^\d{1,2}$',score)【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。2.定义学生类将学生信息和成绩管理封装到一个学生类中采用模块化和面向对象编程思想,可以定义学生类,将学生信息和成绩管理封装到一个学生类中,实现学生基本信息的初始化,学生成绩的输入、输出,以及学生成绩计算方法。(1)定义类名称和模块命名为了便于维护,将学生类定义到一个模块中,并命名文件名称,该任务中将模块文件名命名为student.py,并用classStudent定义类的名称。【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。2.定义学生类将学生信息和成绩管理封装到一个学生类中(2)定义学生类初始化构造方法定义学生类构造方法,将学生信息(学生姓名、学生专业、学生成绩)进行初始化。具体代码如下:def__init__(self,name,major):=nameself.major=majorself.scores={}【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。2.定义学生类将学生信息和成绩管理封装到一个学生类中(3)定义Student类学生成绩的输入方法将学生成绩的输入封装到classStudent类中,实现学生成绩的输入,并通过utils类定义的方法进行验证。具体代码如下:definput_scores(self,courses):"""输入课程成绩"""forcourseincourses:whileTrue:score=input(f"请输入{Utils.desensitize()}的《{course}》成绩:")ifUtils.validate_score(score):score=int(score)if0<=score<=100:self.scores[course]=scorebreakelse:print("成绩需在0-100之间")else:print("请输入有效的整数成绩")【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。2.定义学生类将学生信息和成绩管理封装到一个学生类中(4)定义Student类成绩计算方法defcalculate_statistics(self):"""计算总分和平均分"""self.total=sum(self.scores.values())self.average=self.total/len(self.scores)【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。2.定义学生类将学生信息和成绩管理封装到一个学生类中(5)定义Student类成绩输出方法defprint_report(self):"""打印成绩报告"""print("\n====================成绩报告====================")print(f"姓名:{Utils.desensitize():<15}专业:{self.major}")print("-"*50)print(f"{'课程名称':<20}|{'成绩':>10}")print("-"*50)forcourse,scoreinself.scores.items():print(f"{course:<20}|{score:>10.2f}")print(f"{'总分':<22}|{self.total:>14.2f}")print(f"{'平均分':<21}|{self.average:>14.2f}")【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。3.定义主程序逻辑并将主程序逻辑封装到一个主类中主程序需要输入学生信息、创建学生对象、计算学生成绩、打印学生成绩报告功能,因此可以创建一个主程序类,将这些功能封装到该类中。(1)定义类名称和主程序模块名称主程序类的名称可以定义为GradeManagementSystem,模块名称定义为main.py。【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。3.定义主程序逻辑并将主程序逻辑封装到一个主类中主程序需要输入学生信息、创建学生对象、计算学生成绩、打印学生成绩报告功能,因此可以创建一个主程序类,将这些功能封装到该类中。(2)定义GradeManagementSystem类初始化构造方法def__init__(self):self.courses=["Python程序设计","高等数学","大学英语","计算机应用基础","人工智能导论"]【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法用面向对象编程思想改写和完善学生成绩管理系统。3.定义主程序逻辑并将主程序逻辑封装到一个主类中(3)定义主程序运行方法将主程序需要运行的代码封装到运行方法中,调用该方法可以实现整个系统的运行。代码如下:defrun(self):print("===高校学生成绩管理系统===".center(50,'='))#输入学生信息whileTrue:stu_name=Utils.clean_input(input("请输入学生姓名:"))ifre.match(r'^[\u4e00-\u9fa5A-Za-z]{2,20}$',stu_name):breakprint("姓名需为2-20个中英文字符")whileTrue:stu_major=Utils.clean_input(input("请输入学生专业:"))if3<=len(stu_major)<=20:breakprint("专业名称需为3-20个字符")#创建学生对象student=Student(stu_name,stu_major)#输入成绩student.input_scores(self.courses)#计算统计结果student.calculate_statistics()#打印报告student.print_report()【任务实施】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法1.编写一个智能汽车的类,要求包含至少如下的属性和方法,能实现引擎启动和停止、加速和减速以及汽车状态显示。属性包括:Brand:汽车品牌;Model:汽车型号;Color:汽车颜色;fuel_type:燃料类型(如电动、汽油等);speed:当前速度;engine_on:引擎状态(开启或关闭);方法包括:start_engine():启动引擎。stop_engine():关闭引擎。accelerate(increment):加速,增加速度。brake(decrement):刹车,减少速度。display_status():显示汽车的当前状态。【思考与练习】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务一
使用面向对象程序设计思想编写系统中的类和方法2.编写一个关于职业道德应该具有的职业行为Python类,要求包含至少如下的属性和方法,能实现对员工责任感、诚信、团队合作和合规性评分,并能添加对员工的反馈记录和生成员工的职业道德报告。属性包括:employee_name:员工姓名。job_title:职位。integrity_score:诚信评分。responsibility_score:责任感评分。teamwork_score:团队合作评分。compliance_score:合规性评分。feedback:反馈记录列表。方法包括:update_integrity(score):更新诚信评分。update_responsibility(score):更新责任感评分。update_teamwork(score):更新团队合作评分。update_compliance(score):更新合规性评分。add_feedback(feedback_text):添加反馈记录。display_ethics_report():显示职业道德报告。overall_score():计算并显示综合职业道德评分。【思考与练习】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点在本模块的任务一中,定义工具类Utils将将清洗用户输入的特殊字符和多余空格、姓名脱敏处理、成绩验证功能封装到类中,定义学生类Student,将学生成绩的输入、输出,以及学生成绩计算方法封装到类中,这些都是面向对象编程典型特征。本任务要求学习Python面向对象封装、继承和多态特征,进一步理解面向对象编程思想,掌握面向对象编程方法最后,编写一个简单的银行账户管理系统,包括普通银行账户(BankAccount)和储蓄账户(SavingsAccount),能体现面向对象编程继承、方法重用和多态,支持普通账户的存取款操作和储蓄账户的利息计算功能。【任务描述】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点1.Python封装机制及实现方法
大多数面向对象编程语言(诸如C++、Java等)都具备3个典型特征,即封装、继承和多态。简单的理解封装(Encapsulation),即在设计类时,刻意地将一些属性和方法隐藏在类的内部,这样在使用此类时,将无法直接以“类对象.属性名”(或者“类对象.方法名(参数)”)的形式调用这些属性(或方法),而只能用未隐藏的类方法间接操作这些隐藏的属性和方法。
除此之外,对一个类实现良好的封装,用户只能借助暴露出来的类方法来访问数据,需要在这些暴露的方法中加入适当的控制逻辑,实现用户对类中属性或方法的不合理操作。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点1.Python封装机制及实现方法
类的封装举例:【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点1.Python封装机制及实现方法Python的类属性和类方法命名有三种命名形式,一种是属性和方法名称前面无下划线前缀,代码中的name和age属性就是这类属性,这种属性或者方法是对所有代码公开的,可以认为是公有属性,也就是可以直接通过实例或类访问,可以被子类继承或者覆盖。
另一种是单下划线前缀形式,这种属性和方法通常表示内部使用,是一种约定,告诉其他开发者这个属性或方法不应在类外部访问,但Python本身并不强制限制访问,也就是可以直接访问的。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点1.Python封装机制及实现方法
还有一种双下划线前缀的形式,双下划线前缀则触发名称修饰(NameMangling),主要用于避免子类中的命名冲突,同时提供一定程度的私有化,可以认为是私有属性,Python自动重命名属性或者方法为_ClassName__member格式,避免子类命名冲突,起到保护的作用,但可通过修饰后的名称强制访问。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点1.Python封装机制及实现方法
除了采用_ClassName__member命名格式访问外,还可以通过定义类方法实现,下面创建类方法实现对私有属性的访问。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点2.Python继承机制及其使用Python类的封装、继承、多态三大特性,前面已经详细介绍了Python类的封装,本节继续讲解Python类的继承机制。
继承机制经常用于创建和现有类功能类似的新类,或者新类只需要在现有类基础上添加一些成员(属性和方法),但又不想直接将现有类代码复制给新类。也就是说,通过使用继承这种机制,可以轻松实现类的重复使用。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点2.Python继承机制及其使用
假设现有一个Animal类,该类用name属性描述动物名称,用speak()方法可以描述动物的叫声,现在需要创建一个Dog类,要求此类不但可以描述Dog的名称和叫声,还有打印输出Dog名称的方法。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点2.Python继承机制及其使用Python中,实现继承的类称为子类,被继承的类称为父类(也可称为基类、超类)。样例中,Dog是子类,Animal是父类。子类继承父类时,只需在定义子类时,将父类(可以是多个)放在子类之后的圆括号里即可。语法格式如下:class类名(父类1,父类2,...)注意,如果该类没有显式指定继承自哪个类,则默认继承object类(object类是Python中所有类的父类,即要么是直接父类,要么是间接父类)。另外,Python的继承是多继承机制,即一个子类可以同时拥有多个直接父类。【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点2.Python继承机制及其使用
多继承的示例:【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755975358C32C42B60046E65E5AB2B817CFACDA70963A03272FA99D31C85E250EFEC4061BFB07F05F931B289192FCB8E0285A555C1F230D307BE5C25C0A023A9868BE4DC722F304C024870D51F93B1C73F8B0BFA1FC623C98224856AC19AACB53BF009612A79383772CE3D9D4DAA720XX.037AAAD45827A9CF任务二
分析面向对象编程特点2.Python继承机制及其使用
多继承的示例【知识准备】e7d195523061f1c029d8a470330beef7eecbf578a74c67be34E755
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年个人科研工作阶段性总结
- 精神科护理标准化模版
- 校园消防安全案例集
- 碳汇计量评估师班组建设知识考核试卷含答案
- 人工智能应用已无处不在
- 堆场机械维修工创新应用考核试卷含答案
- 汽油煤油柴油加氢装置操作工安全技能测试考核试卷含答案
- 混凝土机械维修工安全生产意识水平考核试卷含答案
- 改性塑料配制工班组管理水平考核试卷含答案
- 桥梁巡视养护工岗位专项应用考核试卷含答案
- 福建福州市鼓楼城投招聘笔试题库2026
- 2026年厂区消防应急器材使用试题库及答案
- 26年三升四语文阅读理解暑假每日一练(参考答案)
- 2026年楚雄州州级机关统一遴选公务员笔试真题及答案解析
- 2026年驾驶理论测试题及答案
- 微众银行:AI金融创新
- 《行为安全观察手册》
- 2026年核能质保监查员考试题及答案
- 对外投资合作国别(地区)指南-蒙古国(2025年版)
- 检验员工作责任制度
- 医患沟通礼仪课件
评论
0/150
提交评论