当前位置: 首页 > article >正文

第8篇:模板与实例——面向对象编程入门(上)python中文编程

作者中文编程倡导者—— 李金雨联系方式wbtm2718qq.com系列python中文编程入门教程** 核心理念 AI时代必须使用中文编程母语编程阅读效率极高第8篇模板与实例——面向对象编程入门上开篇引入本课目标理解什么是模板类和实例对象掌握为什么要使用模板掌握如何定义模板class掌握如何创建实例对象理解成员数据属性的概念和使用理解成员功能方法的概念和使用理解self参数的含义生活场景引入同学们在日常生活中我们经常会遇到一些具有共同特征的事物饼干店里的饼干都是用同一个模具做出来的小区里的房子都是按照同一套图纸建造的孩子们用乐高积木拼出来的模型都是按照说明书搭建的在Python中我们可以使用类模板来描述这些具有共同特征的事物然后创建对象实例来表示具体的个体。面向对象编程让我们可以更自然地模拟现实世界中的事物。预期成果展示在本课结束时你将能够定义自己的类模板创建类的实例对象给类添加成员数据和成员方法访问和修改对象的属性调用对象的方法编写一个学生类和一个动物类概念讲解1. 什么是模板类和实例对象模板类是一种抽象的描述定义了一组属性和方法用于创建具有共同特征的对象。实例对象是根据类创建的具体个体具有类定义的属性和方法。生活例子模板就像饼干模具实例就像具体的饼干模板就像建筑图纸实例就像建好的房子模板就像乐高说明书实例就像拼好的模型代码示例# 定义一个学生模板类class学生:学生模板用于创建学生实例pass# 创建学生实例对象学生一学生()学生二学生()print(学生一)print(学生二)2. 为什么要用模板使用模板类有以下好处代码复用可以创建多个具有相同结构的对象数据封装将数据和操作数据的方法封装在一起逻辑清晰使代码更加结构化和易于理解便于维护修改类的定义会影响所有实例生活例子饼干模具可以做出很多相同形状的饼干建筑图纸可以用来建造多栋相同的房子乐高说明书可以用来拼出多个相同的模型3. 定义模板class在Python中我们使用class关键字来定义类。基本结构class类名:类的说明文档# 类的属性和方法模板命名规范类名应该使用中文名词类名的首字母应该大写大驼峰命名法代码示例# 定义学生模板class学生:学生模板用于创建学生实例pass# 定义动物模板class动物:动物模板用于创建动物实例pass# 定义汽车模板class汽车:汽车模板用于创建汽车实例pass4. 创建实例对象创建实例对象的过程称为实例化语法为实例名 类名()。实例命名规范实例名应该使用中文名词实例名应该小写代码示例# 创建学生实例学生一学生()学生二学生()# 创建动物实例狗动物()猫动物()# 创建汽车实例轿车汽车()卡车汽车()print(学生一)print(狗)print(轿车)5. 成员数据属性成员数据是类中定义的变量用于存储对象的状态。定义成员数据class学生:学生模板def__init__(self,姓名,年龄):初始构造功能self.姓名姓名 self.年龄年龄 self.成绩0访问和修改成员数据# 访问成员数据print(学生一.姓名)print(学生一.年龄)# 修改成员数据学生一.成绩95print(学生一.成绩)生活例子学生的姓名、年龄、成绩动物的名称、年龄、种类汽车的品牌、颜色、速度代码示例# 定义学生模板class学生:学生模板def__init__(self,姓名,年龄):初始构造功能self.姓名姓名 self.年龄年龄 self.成绩0# 创建学生实例学生一学生(张三,15)学生二学生(李四,16)# 访问成员数据print(学生一.姓名,学生一.年龄,学生一.成绩)print(学生二.姓名,学生二.年龄,学生二.成绩)# 修改成员数据学生一.成绩95学生二.成绩88print(学生一.姓名,的成绩是,学生一.成绩)print(学生二.姓名,的成绩是,学生二.成绩)6. 成员功能方法成员功能是类中定义的函数用于操作对象的状态。定义成员功能class学生:学生模板def__init__(self,姓名,年龄):初始构造功能self.姓名姓名 self.年龄年龄 self.成绩0def学习(self,科目):学生学习某个科目print(f{self.姓名}正在学习{科目})def考试(self,科目,分数):学生参加某科目的考试self.成绩分数print(f{self.姓名}的{科目}考了{分数}分)调用成员功能# 调用成员功能学生一.学习(数学)学生一.考试(数学,95)self参数的含义self是一个特殊参数指向当前对象在方法内部通过self访问对象的属性和方法调用方法时不需要传递self参数生活例子学生的学习、考试方法动物的吃、睡方法汽车的启动、加速方法代码示例# 定义学生模板class学生:学生模板def__init__(self,姓名,年龄):初始构造功能self.姓名姓名 self.年龄年龄 self.成绩0self.科目列表[]# 成员功能def学习(self,科目):学生学习某个科目self.科目列表.append(科目)print(f{self.姓名}正在学习{科目})def考试(self,科目,分数):学生参加某科目的考试self.成绩分数print(f{self.姓名}的{科目}考了{分数}分)def显示信息(self):显示学生的所有信息print(f姓名{self.姓名})print(f年龄{self.年龄}岁)print(f成绩{self.成绩}分)print(f学习的科目{self.科目列表})# 创建实例学生一学生(张三,15)学生一.学习(数学)学生一.学习(英语)学生一.考试(数学,95)学生一.显示信息()动手实践基础练习必做创建动物模板编写一个动物类包含名称、年龄、声音以及叫的功能# 动物模板class动物:动物模板def__init__(self,名称,年龄,声音):初始构造功能self.名称名称 self.年龄年龄 self.声音声音def叫(self):动物发出叫声print(f{self.名称}发出{self.声音}的叫声)def显示信息(self):显示动物信息print(f名称{self.名称})print(f年龄{self.年龄}岁)print(f叫声{self.声音})# 创建实例狗动物(小狗,2,汪汪)猫动物(小猫,1,喵喵)狗.叫()猫.叫()狗.显示信息()猫.显示信息()创建汽车模板编写一个汽车类包含品牌、颜色、速度以及加速、减速功能# 汽车模板class汽车:汽车模板def__init__(self,品牌,颜色,速度0):初始构造功能self.品牌品牌 self.颜色颜色 self.速度速度def加速(self,增加速度):汽车加速self.速度增加速度print(f{self.颜色}的{self.品牌}加速到{self.速度}km/h)def减速(self,减少速度):汽车减速self.速度max(0,self.速度-减少速度)print(f{self.颜色}的{self.品牌}减速到{self.速度}km/h)def显示信息(self):显示汽车信息print(f品牌{self.品牌})print(f颜色{self.颜色})print(f当前速度{self.速度}km/h)# 创建实例轿车汽车(宝马,红色)卡车汽车(解放,蓝色)轿车.加速(60)轿车.加速(30)轿车.减速(20)轿车.显示信息()卡车.加速(40)卡车.减速(10)卡车.显示信息()进阶练习选做创建书籍模板编写一个书籍类包含书名、作者、价格以及显示信息功能# 书籍模板class书籍:书籍模板def__init__(self,书名,作者,价格):初始构造功能self.书名书名 self.作者作者 self.价格价格def显示信息(self):显示书籍信息print(f书名{self.书名})print(f作者{self.作者})print(f价格{self.价格}元)# 创建实例书1书籍(Python编程从入门到实践,Eric Matthes,89.0)书2书籍(小王子,安托万·德·圣-埃克苏佩里,29.5)书1.显示信息()print(\n)书2.显示信息()创建银行账户模板编写一个银行账户类包含账户名、余额以及存款、取款功能# 银行账户模板class银行账户:银行账户模板def__init__(self,账户名,余额0):初始构造功能self.账户名账户名 self.余额余额def存款(self,金额):存款self.余额金额print(f{self.账户名}存款{金额}元当前余额{self.余额}元)def取款(self,金额):取款if金额self.余额:self.余额-金额print(f{self.账户名}取款{金额}元当前余额{self.余额}元)else:print(f余额不足当前余额{self.余额}元)def显示信息(self):显示账户信息print(f账户名{self.账户名})print(f当前余额{self.余额}元)# 创建实例账户1银行账户(张三)账户2银行账户(李四,1000)账户1.存款(500)账户1.取款(200)账户1.显示信息()print(\n)账户2.取款(1500)账户2.取款(800)账户2.显示信息()挑战练习拓展创建学生管理系统编写一个学生管理系统包含添加学生、显示学生信息、计算平均分等功能# 学生管理系统class学生:学生模板def__init__(self,姓名,年龄):初始构造功能self.姓名姓名 self.年龄年龄 self.成绩字典{}def添加成绩(self,科目,分数):添加科目成绩self.成绩字典[科目]分数def计算平均分(self):计算平均分ifnotself.成绩字典:return0returnsum(self.成绩字典.values())/len(self.成绩字典)def显示信息(self):显示学生信息print(f姓名{self.姓名})print(f年龄{self.年龄}岁)print(f成绩{self.成绩字典})print(f平均分{self.计算平均分():.2f})class学生管理系统:学生管理系统def__init__(self):初始构造功能self.学生列表[]def添加学生(self,学生):添加学生self.学生列表.append(学生)print(f添加学生{学生.姓名}成功)def显示所有学生(self):显示所有学生信息ifnotself.学生列表:print(没有学生信息)returnfori,学生inenumerate(self.学生列表,1):print(f\n第{i}个学生)学生.显示信息()def计算班级平均分(self):计算班级平均分ifnotself.学生列表:return0总分数0总科目数0for学生inself.学生列表:总分数sum(学生.成绩字典.values())总科目数len(学生.成绩字典)if总科目数0:return0return总分数/总科目数# 测试学生管理系统系统学生管理系统()# 添加学生学生1学生(张三,15)学生1.添加成绩(数学,95)学生1.添加成绩(英语,88)学生1.添加成绩(语文,92)系统.添加学生(学生1)学生2学生(李四,16)学生2.添加成绩(数学,85)学生2.添加成绩(英语,90)系统.添加学生(学生2)# 显示所有学生系统.显示所有学生()# 计算班级平均分班级平均分系统.计算班级平均分()print(f\n班级平均分{班级平均分:.2f})知识总结核心概念回顾类模板定义对象的属性和方法的蓝图对象实例根据类创建的具体个体属性成员数据对象的状态信息方法成员功能对象的行为self参数指向当前对象的引用关键代码速查功能代码说明定义类class 类名: 代码块定义一个类初始化方法def __init__(self, 参数): 代码块初始化对象的属性创建对象对象名 类名(参数)创建类的实例访问属性对象名.属性名访问对象的属性修改属性对象名.属性名 值修改对象的属性定义方法def 方法名(self, 参数): 代码块定义类的方法调用方法对象名.方法名(参数)调用对象的方法常见错误提醒缩进错误类和方法的缩进不正确参数错误__init__方法的参数不匹配self参数方法定义时忘记添加self参数属性访问访问不存在的属性命名错误类名或方法名拼写错误课后作业巩固练习题编写一个手机类包含品牌、型号、价格以及打电话、发短信功能编写一个电脑类包含品牌、型号、内存以及开机、关机功能创意编程题编写一个图书馆类包含书籍列表以及添加书籍、“借出书籍”、归还书籍功能编写一个学校类包含学生列表和教师列表以及添加学生、“添加教师”、显示信息功能下篇预习提示在下一篇中我们将深入学习__init__方法了解如何在创建对象时初始化其属性。请思考如何在创建对象时设置默认值如何验证输入的参数如何在初始化时执行一些操作学习交流如果你在学习过程中遇到任何问题欢迎联系我** 视频号“时空系”邮箱wbtm2718qq.com其他提示本人正在开发纯中文编程语言和编译器有兴趣的可以交流本人正在写一本基于中国母语思维习惯的数学教材可以让你一年内学完从初中到研究生的数学而且可以让你快速掌握人工智能的关键数学知识有兴趣的可以交流祝你学习愉快

相关文章:

第8篇:模板与实例——面向对象编程入门(上)python中文编程

作者: 中文编程倡导者—— 李金雨 联系方式: wbtm2718qq.com 系列: python中文编程入门教程 ** 核心理念: AI时代必须使用中文编程,母语编程阅读效率极高" 第8篇:模板与实例——面向对象编程入门&…...

构建去中心化个人AI智能体:基于OpenClaw与Morpheus的本地化实践

1. 项目概述:构建一个真正属于你的个人AI智能体在AI工具日益普及的今天,我们似乎已经习惯了这样一种模式:注册一个账户,绑定一张信用卡,然后按月为API调用付费。你的每一次对话、每一次请求,都在为某个中心…...

别再瞎猜了!我用JavaScript模拟了100万次双色球购买,告诉你‘守号’到底有没有用

用JavaScript模拟百万次双色球:守号策略的数学真相 每次路过彩票站,总能看到有人拿着小本本认真记录往期开奖号码。作为程序员,我更习惯用代码来验证这些民间"秘籍"的实际效果。今天我们就用JavaScript构建一个双色球模拟系统&…...

如何快速掌握Flowframes:面向新手的完整AI视频插帧指南

如何快速掌握Flowframes:面向新手的完整AI视频插帧指南 【免费下载链接】flowframes Flowframes Windows GUI for video interpolation using DAIN (NCNN) or RIFE (CUDA/NCNN) 项目地址: https://gitcode.com/gh_mirrors/fl/flowframes 想让你的视频素材从3…...

GetNote开源数据抓取工具:智能解析与自动化内容收集实践

1. 项目概述:一个为“GetNote”而生的开源数据抓取利器如果你是一名笔记应用的重度用户,或者正在为团队寻找一个高效的信息收集与整理方案,那么“GetNote”这个名字你可能不会陌生。它是一个功能强大的笔记应用,以其出色的跨平台同…...

工业USB技术:挑战、解决方案与应用实践

1. USB技术在工业环境中的挑战与机遇 USB(通用串行总线)技术自1996年问世以来,凭借其即插即用、热插拔和供电能力等优势,已成为消费电子领域最成功的连接标准之一。在办公和家用环境中,USB接口的便利性无可争议——单端…...

AI智能体开发框架agent-pack-n-go:开箱即用的快速构建与部署指南

1. 项目概述:一个开箱即用的智能体开发与部署框架最近在探索AI智能体(Agent)的落地应用时,发现了一个痛点:从构思一个智能体到真正把它跑起来,中间隔着“十万八千里”。你需要考虑框架选型、环境配置、工具…...

BTL框架:基于生物认知的GUI设计优化实践

1. 项目概述:当生物认知遇上GUI设计在图形用户界面(GUI)领域深耕多年后,我发现一个有趣现象:尽管硬件性能每年都在提升,但用户操作效率的瓶颈往往不在计算速度,而在于人机交互过程中的认知摩擦。…...

AI编程助手时代,代码面试正在被重写#CHI2026论文解读

当 Copilot 能用几秒钟生成一段完整函数,候选人展示专业能力的方式正在发生根本性转变。一项针对 16 名软件工程师的实地研究发现:在 AI 编程助手介入后,现场编程面试(Live Coding Interview)的评估逻辑正在被彻底改写…...

MIL-STD-1553B军用数据总线协议详解与应用实践

1. MIL-STD-1553B协议深度解析1.1 军用数据总线的技术演进在20世纪50-60年代,航空电子系统采用简单的独立模拟系统架构,各子系统通过点对点布线连接。这种架构导致飞机内部布线复杂,重量增加,后期系统集成困难。随着数字技术的兴起…...

AI科学插图生成:技术挑战与优化实践

1. 项目背景与核心挑战在学术研究和工程实践中,高质量的科学插图(Figure)是传达复杂概念、展示实验结果的关键载体。传统科学插图的制作通常依赖专业设计软件(如Adobe Illustrator)或编程工具(如Matplotlib…...

从零开始:在180nm工艺下搭建一个12位50MHz的流水线ADC(Pipelined-ADC)

从零构建180nm工艺12位50MHz流水线ADC的工程实践指南 在模拟集成电路设计中,流水线型模数转换器(Pipelined-ADC)因其出色的速度-精度平衡特性,成为中高速高精度应用的首选架构。本文将基于180nm CMOS工艺,从工程实现角度详细解析一个12位50MH…...

Claude Code:AI智能体如何重塑开发工作流,从命令行到智能协作

1. 从命令行到智能体:为什么Claude Code是开发者的下一个必备工具如果你和我一样,每天有超过一半的时间是在终端里度过的,那么你肯定理解那种在命令行、代码编辑器和浏览器之间不断切换带来的割裂感。传统的开发流程中,我们手动执…...

为什么你的浏览器视频下载总是失败?Video DownloadHelper伴侣应用来帮你

为什么你的浏览器视频下载总是失败?Video DownloadHelper伴侣应用来帮你 【免费下载链接】vdhcoapp Companion application for Video DownloadHelper browser add-on 项目地址: https://gitcode.com/gh_mirrors/vd/vdhcoapp Video DownloadHelper伴侣应用是…...

万亿参数模型Ring-1T:MoE架构与强化学习突破

1. 万亿参数模型Ring-1T的技术突破在人工智能领域,大型语言模型的发展已经进入了一个全新的阶段。最近,Inclusion AI团队发布了Ring-1T,这是首个开源的、拥有万亿参数规模的思维模型。这个突破性的成果不仅在模型规模上创造了新的记录&#x…...

EFLA注意力机制:优化挑战与训练策略解析

1. EFLA模型架构与优化挑战EFLA(Exponential Filtered Linear Attention)是一种新型的注意力机制架构,其核心创新点在于通过指数滤波机制来替代传统的线性注意力计算。这种设计在理论上消除了类似DeltaNet等基于欧拉离散化方法固有的数值误差…...

CAT6500电源管理芯片特性与应用解析

1. CAT6500双向电源选择开关核心特性解析CAT6500是ON Semiconductor推出的一款集成化电源路径管理芯片,专为解决多电源输入系统的复杂切换需求而设计。这款芯片在便携式设备电源管理领域具有显著优势,其核心特性主要体现在三个方面:1.1 低损耗…...

Podinfo:云原生微服务样板间,从部署到集成的完整实践指南

1. 项目概述:为什么我们需要一个“样板间”微服务?在云原生和微服务架构成为主流的今天,无论是初创团队还是大型企业,启动一个新服务时都面临一个共同问题:如何快速搭建一个符合生产环境标准的“样板间”?这…...

gptree:高效向AI助手提供项目上下文的命令行工具

1. 项目概述:为什么我们需要 gptree?如果你和我一样,日常开发中重度依赖像 ChatGPT、Claude、Cursor 这类 AI 编程助手,那你肯定遇到过这个痛点:如何高效地把整个项目的上下文喂给 AI?复制粘贴单个文件太零…...

NoFences:免费开源的Windows桌面分区神器,终极解决图标杂乱问题

NoFences:免费开源的Windows桌面分区神器,终极解决图标杂乱问题 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为Windows桌面上满屏的图标而烦恼…...

LLM命名风格对Grimdark叙事影响的实验研究

1. 项目背景与核心目标这个实验项目源于我在测试大型语言模型(LLM)时的一个有趣发现:当我们给模型输入相同提示词但使用不同名称时,模型的输出风格和内容会产生微妙变化。为了系统性地研究这种现象,我设计了一个名为"Grimdark Trilogy&q…...

到底什么资格,才算真正的资深 UE 开发专家

目录 前言 一、破除认知误区:绝大多数 UE 开发者,达不到资深专家门槛 1.1 初级 / 中级 / 高级 / 资深 UE 专家 核心能力差异 1.2 伪「资深 UE」典型特征 二、核心资质一:吃透 UE 底层架构,精通 UObject 与引擎核心运行机制 …...

ARM开发板硬件接口与寄存器配置实战指南

1. ARM开发板硬件接口详解Integrator/IM-PD1开发板作为经典的ARM评估平台,其接口布局体现了嵌入式系统的典型设计思路。板载的PrimeCell系列外设控制器采用AMBA总线架构,通过标准化的寄存器接口与ARM内核交互。我们先从物理连接层开始剖析:1.…...

单变量时间序列预测:网格搜索优化基础方法

1. 单变量时间序列预测中的网格搜索基础方法解析时间序列预测一直是数据分析领域的核心挑战之一。最近在整理一个空气质量预测项目时,我发现很多初学者会直接套用复杂的LSTM或Prophet模型,却忽略了基础方法的潜力。实际上,在资源有限或数据量…...

第15集:时序数据库选型实战!InfluxDB vs TDengine vs Prometheus 到底选谁

第15集:时序数据库选型实战!InfluxDB vs TDengine vs Prometheus 到底选谁 本集解锁内容:手把手安装三款主流时序库,用相同的运维指标数据跑分对比写入速度、查询性能、存储空间;给出面试中关于技术选型的万能回答模板。学完本集,你能在面对“为什么选这个库”的追问时,…...

AI团队协作神器:用Git和IM让后端开发效率飙升10倍

文章探讨了如何利用Git作为信息中枢,结合IM实时通知,实现多个AI Agent(智能助手)像人类团队一样高效协作,解决传统后端开发中信息孤岛、需求传递慢、接口不同步、跨服务依赖等问题。通过构建共享知识库、Agent业务层和…...

ARMv8/v9异常处理与ESR_EL1寄存器解析

1. ARM异常处理机制概述在ARMv8/v9架构中,异常处理是处理器最核心的机制之一。当处理器执行过程中遇到无法继续正常执行的状况时,会触发异常并切换到对应的异常级别(EL)。异常分为同步异常和异步异常两大类:同步异常&a…...

功率芯片中高能氢离子

在半导体制造体系中,离子注入一直被视为“隐形核心工艺”。相比光刻等高曝光设备,它不直接决定线宽,却深刻影响器件的电学行为。此次围绕串列型高能氢离子注入机的技术突破,其本质并非简单设备国产化,而是将粒子加速技术引入功率器件制造的关键环节,属于典型的“跨学科工…...

OpCore-Simplify:15分钟搞定黑苹果OpenCore配置的终极指南

OpCore-Simplify:15分钟搞定黑苹果OpenCore配置的终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑苹果复杂的OpenCore配置…...

Obsidian知识图谱可视化:Smart Connections Visualizer插件深度解析

1. 项目概述:为你的知识库装上“关系雷达” 如果你和我一样,是个重度 Obsidian 用户,并且已经用上了强大的 Smart Connections 插件来挖掘笔记间的智能关联,那你一定体会过那种感觉:面对一个笔记,你知道它…...