Python基础 -- 面向对象基础
在前面我们用很多Python语法做了很多编码案例那些都是面向过程的编程就是把一个需求分解成一系列要执行的步骤然后按照步骤依次执行这些任务关注的是流程、步骤适合简单线性的任务这篇主要是讲面向对象编程比如我们要盖一个房子我们的过程就是平地基、打桩、浇水泥、施工、硬装、软装一、面向对象的解释1、介绍面向对象把对象可以理解为具体的人/事的属性和方法打包到一起是面向对象的基本单元2、案例解释还是那个盖房子的案例我们盖房子的拖拉机、水泥机、施工工人、材料等都可以是对象拖拉机的属性 颜色、油耗、马力 功能 挖土水泥机的属性容量、颜色 功能存储水泥和搅拌水泥工人的属性工种、年龄、技能 功能焊接、搬运材料的属性类型、数量、价格、材质 功能铺贴、存储面向对象关注的是谁能帮我来干这件事二、类和实例1、介绍·类描述的是一组具有相同属性特征和方法功能/行为的模板如:月饼模具·对象对象是类的实例是基于类创建出来的实例对象如用模具做出来的各种月饼·实例化创建对象的过程一个类可以创建无数个对象2、类的定义1命名遵循大驼峰命名法每个单词的首字母大写单词之间没有分隔符如UserInfo2定义类的语法class 类名def __init__(self,参数列表)self.属性名 参数值self.属性名 参数值#创建对象对象名 类名参数列表def定义在类的外面叫函数定义在类的里面叫类的方法案例__dict__:python中用户自定义类实例的一个特殊属性。用于以字典形式存储对象属性__init__:初始化方法对象创建后自动调用主要用于设置对象的初始状态对象属性self :3、类中实例方法的定义和之前的函数定义方法是一样的class 类名def __init__(self,形参列表)self.属性名 参数值self.属性名 参数值def 方法名self形参列表.....对象名 类名参数列表对象名.方法名参数列表案例class Car: def __init__(self, b,c,p): self.brand b self.color c self.price p def show(self,g): print(f{self.brand}有{g}功能) def show2(self,coupon): return self.price - coupon c1 Car(BMW,Black,50000) print(c1.__dict__) c1.show(自动驾驶) print(f{c1.brand}的售价是{c1.show2(2000)}) #BMW有自动驾驶功能 #BMW的售价是480004、魔方方法1介绍Python中提供的以双下划线开头和结尾的特殊方法用于定义特殊行为,如:__init__2魔方方法不用手动调用Python会在合适的时机自动调用魔法方法描述__init__初始化方法__str__字符串表示方法__eq__比较两个对象是否相等__lt__,__le__,__gt__,__ge__支持比较两个对象的大小less than小于等于less than or equal大于greater than大于等于greater than or equalclass Car: def __init__(self, name, price): self.name name self.price price def func1(self,func): print(f{self.name}可以{func}) def __str__(self): return f{self.name}{self.price} def __eq__(self,other): return self.price other.price and self.name other.name def __le__(self,other): return self.price other.price car1 Car(BMW,500000) car2 Car(BMW,500000) print(car1) #在这里不需要专门去调用__str__方法系统会自动调用 print(car1 car2) #True print(car1 car2)5、属性1· 实例属性属于每个对象的属性每个对象都是独立的各个对象特有的属性2· 类属性属于类本身的属性所有实例共享所有对象共享的数据或配置通过实例查找属性时会优先查找实例属性实例属性不存在时再查找类属性三、案例采用面向对象的编程思想完成教务管理系统的开发。教务管理系统可以管理在校学生的成绩信息通过控制台菜单与用户交互具体的功能如下1、添加学生成绩根据学生输入的姓名、语文成绩、数学成绩、英语成绩记录在系统中2、修改学生成绩根据输入的学生姓名修改对应的学生成绩3、删除学生成绩根据输入的学生姓名查找对应的学生成绩4、查询指定的学生成绩根据输入的学生姓名查找对应的学生成绩并输出5、展示出系统中所有学生的成绩import os os.environ[PYTHONIOENCODING] utf-8 class Student: def __init__(self,name,Chinese,Math,English): self.name name self.Chinese Chinese self.Math Math self.English English def update(self,Chinese,Math,English): self.Chinese Chinese self.Math Math self.English English def __str__(self): return f{self.name}的语文成绩是{self.Chinese};数学成绩是{self.Math};英语成绩是{self.English} class Jiaow_Xitong: def __init__(self): self.Student_list [] #添加学生信息 def add_ach(self): name input(请输入学生姓名) for s in self.Student_list: if s.name name: print(该学生已存在) return chinese float(input(请输入语文成绩)) math float(input(请输入数学成绩)) english float(input(请输入英语成绩)) if 100 chinese 0 and 100 math 0 and 100 english 0: print(输入的成绩不在合理范围) return else: stu Student (name, chinese,math,english) self.Student_list.append(stu) print(添加成功) #修改学生信息 def alter_ach(self): name input(请输入学生姓名) for s in self.Student_list: if s.name name: chinese float(input(请输入要修改的语文成绩)) math float(input(请输入要修改的数学成绩)) english float(input(请输入要修改的英语成绩)) if 100 chinese 0 and 100 math 0 and 100 english 0: print(输入的成绩不在合理范围) return else: s.update(chinese,math,english) print(修改成功) return print(您输入的学生不存在) #删除学生信息 def del_s(self): name input(请输入学生姓名) for s in self.Student_list: if s.name name: self.Student_list.remove(s) return print(您输入的学生不存在) #查询指定的学生成绩 def Seek(self): name input(请输入目标学生的姓名) for s in self.Student_list: if s.name name: print(s) return print(该学生不存在) #展示系统中学生的成绩 def show(self): for s in self.Student_list: print(s) #运行系统 def run(self): print(欢迎使用教务管理系统\n1添加学生信息\n2:修改学生信息:\n3、查询指定的额学生成绩\n4、展示系统中学生的成绩\n5、删除学生\n6、退出系统) while True: a int(input(请输入你要进行的操作)) match a: case 1: self.add_ach() case 2: self.alter_ach() case 3: self.Seek() case 4: self.show() case 5: self.del_s() case 6: break case _: print(输入错误) if __name__ __main__: edu Jiaow_Xitong() edu.run()

相关新闻

Java 面向对象基础笔记:类与对象

Java 面向对象基础笔记:类与对象

概述 本技术笔记面向编程零基础小白,用生活化案例通俗讲解 Java 中类、对象核心概念、组成要素与完整实操流程,手把手演示从定义类、封装属性、自定义方法,到创建对象调用方法的完整可运行代码示例。 一、核心概念区分 1.对象 指一个具体且真…

2026/8/5 11:41:14 阅读更多 →
从Cloud Native到AI Native:K8s DRA与Agent协议栈

从Cloud Native到AI Native:K8s DRA与Agent协议栈

从Cloud Native到AI Native:K8s DRA与Agent协议栈如何重构企业AI基础设施 作者:AI-Infra 架构师 | 2026-08-05 一、前言:2026年,云原生的奇点时刻 2026年不是普通的一年。三个关键节点的汇聚,宣告了云原生架构从"…

2026/8/5 11:41:14 阅读更多 →
【扣子事件触发器高阶实战指南】:20年架构师亲授5大避坑法则与实时响应优化秘籍

【扣子事件触发器高阶实战指南】:20年架构师亲授5大避坑法则与实时响应优化秘籍

更多请点击: https://codechina.net 第一章:扣子事件触发器的核心原理与演进脉络 扣子事件触发器(Button Event Trigger)并非传统意义上的物理按键响应机制,而是现代低代码/无代码平台中抽象出的**语义化事件驱动原语…

2026/8/5 11:41:14 阅读更多 →

最新新闻

React Native 移动端取证应用开发:元数据固化与双模式协同设计

React Native 移动端取证应用开发:元数据固化与双模式协同设计

1. 项目缘起:一个快递员的“取证”刚需 去年双十一,我帮一个开驿站的朋友处理了几单棘手的包裹纠纷。客户坚称收到的手机屏幕是碎的,而驿站这边的出库监控又恰好有个死角,拍不清包裹的最终状态。最后扯皮了半个月,朋友…

2026/8/5 12:24:31 阅读更多 →
FastLED电源管理终极指南:如何精确计算LED电流与设计可靠供电系统

FastLED电源管理终极指南:如何精确计算LED电流与设计可靠供电系统

FastLED电源管理终极指南:如何精确计算LED电流与设计可靠供电系统 【免费下载链接】FastLED The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r Wed li…

2026/8/5 12:24:31 阅读更多 →
5分钟拯救杂乱Windows桌面:NoFences免费分区工具完整指南

5分钟拯救杂乱Windows桌面:NoFences免费分区工具完整指南

5分钟拯救杂乱Windows桌面:NoFences免费分区工具完整指南 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要在混乱的桌面图标海洋中寻找需要的文件&a…

2026/8/5 12:24:31 阅读更多 →
CTF 选手收藏:50 个实战解题思路,一篇全部讲透

CTF 选手收藏:50 个实战解题思路,一篇全部讲透

CTF 选手收藏:50 个实战解题思路,一篇全部讲透 CTF竞赛的核心逻辑 • 核心目标:快速拆解问题(Flag导向)、工具链协作、模式化思维。• 关键原则:先广度后深度(优先收集信息)、分治策…

2026/8/5 12:24:31 阅读更多 →
Linux gnome设置触控板当连接鼠标时关闭

Linux gnome设置触控板当连接鼠标时关闭

前言 注:本文以gnome桌面环境演示 笔记本电脑自带一个触控板,但平常都用鼠标,触控板会造成误触,所以一般在设置中关闭触控板,但有时没有鼠标的情况下会用触控板应急。 Windows上有个"当连接鼠标时关闭触控板"…

2026/8/5 12:24:31 阅读更多 →
电路分析中的源变换:从戴维南定理到工程实践

电路分析中的源变换:从戴维南定理到工程实践

1. 从“黑盒”到“白盒”:为什么我们需要源变换 在电路分析的世界里,我们常常会遇到一些“难啃的骨头”——那些看起来结构复杂、元件繁多,让你一眼望去就头皮发麻的电路网络。无论是学生时代面对课后习题,还是工程师在调试一块新…

2026/8/5 12:23:31 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →