Python—面向过程编程,详细讲解(类和实例,初始化函数,类中封装数据与操作)
1.类和实例
类:类别
实例(对象):类型塑造出来的某一个具体的内容
isinstance(对象,类) 返回一个对象是否是一个类的实例
# 声明一个整数类的实例10
a = int(10)
# a = 10
print(type(a), isinstance(a, int))
a = float(5.5)
print(type(a), isinstance(a, float))l0 = []
l1 = list()
l2 = [1, 3, 5, 7, 9]
l3 = list([1, 3, 5, 7, 9])
print(type(l0), isinstance(l0, list))
print(type(l1), isinstance(l1, list))
print(type(l2), isinstance(l2, list))
print(type(l3), isinstance(l3, list))# 自定义一个类
class MyClass: # 定义一个MyClass类passmc1 = list()
# 声明一个MyClass类的实例
mc1 = MyClass() #
print(type(mc1), isinstance(mc1, MyClass))
2.初始化函数
类:抽象的 模板, 约定了未来实例的样子 实例:具体的 内容由类来限定 拥有具体的数据值
类(Class)是面向对象编程中的核心概念,它用来定义对象的抽象模板。类包含了对象的属性(属性是描述对象特征的变量)和方法(方法是能在对象上执行的函数)。类定义了对象的结构和行为,并且可以作为创建实际对象(实例)的蓝图。
实例(Instance)则是类的具体化,也称为对象。它是根据类定义创建的实体,具有类定义的结构和行为。每个实例都有自己的状态(属性值)和行为(方法调用),但是它们都是基于同一个类定义的。
class HandSome:"""类:英俊的人"""def __init__(self, _name, _age):"""self 就是未来构造的实例约定未来的实例需要有 name和 age"""print(f"我是初始化函数", id(self))# 向self中添加数据nameself.name = _name# 向self中添加数据ageself.age = _agedef get_name(self):return self.namedef set_name(self, _name):self.name = _namedef get_age(self):return self.agedef set_age(self, _age):self.age = _age# 类名() 调用类会执行该类的初始化函数
l0 = HandSome("毛", 21)
print(id(l0), l0.name, l0.age)
l0.set_name("小毛")
l0.set_age(18)
print(l0.name, l0.age)l1 = HandSome("超", 20)
print(id(l1), l1.name, l1.age)
l1.set_name("小超")
l1.set_age(18)
print(l1.name, l1.age)l2 = HandSome("泷", 17)
print(id(l2), l2.name, l2.age)
l2.set_name("三叶")
l2.set_age(15)
print(l2.name, l2.age)
分析:
这段 Python 代码主要定义了一个名为 `HandSome` 的类。
类中的 `__init__` 方法是一个特殊的初始化方法,它在创建类的实例时会自动执行。在这个方法中,通过接收 `_name` 和 `_age` 两个参数,将它们分别赋给实例的 `name` 和 `age` 属性,从而为每个实例初始化了这两个属性。
`get_name` 和 `get_age` 方法用于获取实例中相应的属性值,它们简单地返回了实例的 `name` 和 `age` 属性。
`set_name` 和 `set_age` 方法用于修改实例的 `name` 和 `age` 属性值,通过传入新的值来更新实例的属性。
在后续的代码中:
创建了三个 `HandSome` 类的实例 `l0`、`l1` 和 `l2` 。
对于 `l0` 实例:
- 首先以 `("毛", 21)` 作为参数进行初始化,此时 `l0` 的 `name` 为 `毛`,`age` 为 `21` 。
- 然后通过调用 `set_name` 方法将 `name` 修改为 `小毛`,通过调用 `set_age` 方法将 `age` 修改为 `18` 。
对于 `l1` 实例:
- 以 `("超", 20)` 初始化,之后修改为 `("小超", 18)` 。
对于 `l2` 实例:
- 初始化为 `("泷", 17)` ,然后修改为 `("三叶", 15)` 。
通过这种方式,展示了如何创建类的实例,并对实例的属性进行初始化、获取和修改的操作。
3.类中封装数据与操作
class Light:def __init__(self):self.state = Falseself.colors = ["红色", "黄色", "蓝色"]self.current = 0def is_open(self):return self.statedef change_open(self):self.state = not self.statedef get_color(self):return self.colors[self.current]def set_color(self):self.current += 1if self.current == len(self.colors):self.current = 0l0 = Light()
print(l0.is_open()) # 看灯的状态
l0.change_open() # 改变等的状态
print(l0.state) # 查看灯的状态
print(l0.get_color()) # 获取灯的颜色
l0.set_color() # 改变灯的颜色
print(l0.get_color()) # 获取灯的颜色
l0.set_color() # 改变灯的颜色
print(l0.get_color()) # 获取灯的颜色
l0.set_color() # 改变灯的颜色
print(l0.get_color()) # 获取灯的颜色
分析:
1. Light 类的定义
class Light:def __init__(self):self.state = Falseself.colors = ["红色", "黄色", "蓝色"]self.current = 0
(1)__init__ 方法:初始化了 Light 类的实例。具体来说:
(2)self.state 用来表示灯的状态,初始值为 False,表示灯是关闭的。
(3)self.colors 是一个包含三种颜色的列表,即 "红色"、"黄色" 和 "蓝色"。
(4)self.current 初始为 0,用来追踪当前显示的颜色索引。
2. 方法定义
def is_open(self):return self.statedef change_open(self):self.state = not self.statedef get_color(self):return self.colors[self.current]def set_color(self):self.current += 1if self.current == len(self.colors):self.current = 0
(1)is_open() 方法:返回 self.state,即当前灯的状态(True 表示开启,False 表示关闭)。
(2)change_open() 方法:反转 self.state 的值,实现开关灯的功能。
(3)get_color() 方法:返回当前 self.current 索引处的颜色,即当前显示的灯的颜色。
(4)set_color() 方法:将 self.current 索引加一,实现切换到下一个颜色的功能。如果 self.current 等于 len(self.colors),则将 self.current 重置为 0,实现循环切换颜色的效果。
3. 示例代码执行与输出
l0 = Light()
print(l0.is_open()) # False,初始灯是关闭的
l0.change_open() # 改变灯的状态
print(l0.state) # True,查看当前灯的状态
print(l0.get_color()) # 红色,获取当前灯的颜色
l0.set_color() # 改变灯的颜色
print(l0.get_color()) # 黄色,获取当前灯的颜色
l0.set_color() # 改变灯的颜色
print(l0.get_color()) # 蓝色,获取当前灯的颜色
l0.set_color() # 改变灯的颜色
print(l0.get_color()) # 红色,获取当前灯的颜色(循环到第一个颜色)
(1) Light 类简单而有效地模拟了一个可以切换状态和颜色的灯的行为。
(2)使用 state 属性来表示灯的开关状态,通过 change_open() 方法进行切换。
(3)使用 colors 列表和 current 索引来表示和切换灯的颜色,通过 get_color() 和 set_color() 方法实现获取和切换颜色的功能。
(4)代码中展示了如何初始化一个灯的实例,改变其状态和颜色,并输出相应的信息来验证功能的正确性。
文章适当介绍了面向过程编程在Python中的适用场景和扩展应用。无论是初学者还是有一定经验的开发者,都能从这篇博客中获得实用的知识和技能,进一步提升在Python编程中的应用水平
相关文章:
Python—面向过程编程,详细讲解(类和实例,初始化函数,类中封装数据与操作)
1.类和实例 类:类别 实例(对象):类型塑造出来的某一个具体的内容 isinstance(对象,类) 返回一个对象是否是一个类的实例 # 声明一个整数类的实例10 a int(10) # a 10 print(type(a), isinstance(a, int)) a flo…...
Linux云计算 |【第一阶段】SERVICES-DAY2
主要内容: DNS服务基础及搭建、特殊解析(针对地址库文件:DNS轮询 DNS泛域名解析 DNS别名)、缓存DNS(全局转发forwarders)、DNS递归迭代(子域授权)、DNS主从架构搭建、DNS主从数据同步 一、DNS工…...
el-upload照片墙自定义上传多张图片(手动一次性上传多张图片)包含图片回显,删除
需求:el-upload照片墙自定义上传多张图片(手动一次性上传多张图片)包含图片回显,删除,预览,在网上看了很多,都没有说怎么把数据转为file格式的,找了很久最终实现, 难点&a…...
三星Unpacked发布会即将举行:有新款折叠屏手机,还有智能戒指
随着7月的脚步渐近,科技界的目光再次聚焦于三星,它即将在法国巴黎举办今年的第二场Unpacked发布会。这不仅是一场新品的展示,更是三星对创新科技的一次深刻诠释。 从Galaxy Z Fold 6的全新设计,到Galaxy Z Flip 6的显著升级&…...
【Python】Matplotlib简要教程
文章目录 一、简介二、一些基本概念2.1 图表元素2.2 常见图表类型2.3 主要绘图函数及其返回值2.4 Artists 的概念 三、基本图表详解3.1 成对数据3.11 折线图:plot()🟨设置图表样式🟨设置各种标签🟨设置坐标轴🟨绘制子图…...
数驭未来,景联文科技构建高质大模型数据库
国内应用层面的需求推动AI产业的加速发展。根据IDC数据预测,预计2026年中国人工智能软件及应用市场规模会达到211亿美元。 数据、算法、算力是AI发展的驱动力,其中数据是AI发展的基石,中国的数据规模增长速度预期将领跑全球。 2024年《政府工…...
视频汇聚平台EasyCVR启动出现报错“cannot open shared object file”的原因排查与解决
安防视频监控EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。EasyCVR平台支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、fmp4等…...
VMware 安装完,设备管理器中没有虚拟网卡(vmnet0、wmnet1、vmnet8) / 虚拟网络编辑器中没有桥接模式
问题:VMware 安装完,设备管理器中没有虚拟网卡(vmnet0、wmnet1、vmnet8) / 虚拟网络编辑器中没有桥接模式 1、确认 Device Install Service 和 Device Setup Manager 没有被禁用 Device Install Service 和 Device Setup Manager是 Windows 操作系统中…...
构建高效Node.js中间层:探索请求合并转发的艺术
🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【CSS盒模型:掌握网页布局的核心】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞👍收藏⭐评论✍ 引言&#x…...
中断和EXIT原理介绍
中断和EXIT原理介绍 一、中断的介绍?二、EXIT的介绍1.EXIT作用2.EXIT的详情3.EXIT中AFIO复用的作用4.STM32中AFIO复用作用 一、中断的介绍? 二、EXIT的介绍 EXTI(Extern Interrupt)外部中断 1.EXIT作用 EXTI可以监测指定GPIO口…...
vcpkg或者命令行需要设置代理时如何设置
当使用命令行或者vcpkg时,有时候需要设置代理来下载一些代码,那么可以这样: 本地先起一个http或者socks5的代理服务器。监听127.0.0.1:10808如果本地是http代理服务器,在命令行执行: set http_proxyhttp://127.0.0.1:…...
tensorflow安装及数据操作----学习笔记(一)
安装Miniconda 下载对应系统版本的Miniconda。我的系统是ubuntu,所以选择Miniconda3 Linux 64-bit。下载后执行下载的sh脚本 sh Miniconda3-latest-Linux-x86_64.sh -b执行后,运行conda初始化命令 ~/miniconda3/bin/conda init关闭当前命令终端&#…...
顺序表和单链表的经典算法题
目录 前言 一、基础思想(数组) 1. 移除元素 2.删除有序元素的重复项 3.合并两个有序数组 二、单链表算法 1.移除链表元素 2.翻转链表 3.合并两个有序的链表 前言 Hello,小伙伴们,今天我们来做一个往期知识的回顾,今天我将…...
python基础知识点(蓝桥杯python科目个人复习计划71)
做些简单题 第一题:确定字符串是否包含唯一字符 题目描述: 实现一个算法来识别一个字符串的字符是否是唯一的。 若唯一输出YES,否则输出NO。 输入描述: 输入一个字符串,长度不超过100. 输出描述; 输出一行&…...
【大数据专题】Flink题库
1 . 简述什么是Apache Flink ? Apache Flink 是一个开源的基于流的有状态计算框架。它是分布式地执行的,具备低延迟、高吞吐的优秀性能,并且非常擅长处理有状态的复杂计算逻辑场景 2 . 简述Flink 的核心概念 ? Flink 的核心概念…...
Python鲁汶意外莱顿复杂图拓扑分解算法
🎯要点 🎯算法池化和最佳分区搜索:🖊网格搜索 | 🖊发现算法池 | 🖊返回指定图的最佳划分 | 🖊返回指定图的最佳分区 | 🎯适应度和聚类比较功能:🖊图的划分 |…...
【C++】类和对象之继承
目录 继承的概念和定义 继承的概念 继承的定义 继承的定义格式 继承关系和访问限定符 继承基类成员访问方式的变化 访问权限实例 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 复杂的菱形继承及菱形虚拟继承 继承的…...
如何在LlamaIndex中使用RAG?
如何在LlamaIndex中使用RAG 什么是 Llama-Index LlamaIndex 是一个数据框架,用于帮助基于 LLM 的应用程序摄取、构建结构和访问私有或特定领域的数据。 如何使用 Llama-Index ? 基本用法是一个五步流程,将我们从原始、非结构化数据导向基于该数据生成…...
css气泡背景特效
css气泡背景特效https://www.bootstrapmb.com/item/14879 要创建一个CSS气泡背景特效,你可以使用CSS的伪元素(:before 和 :after)、border-radius 属性来创建圆形或椭圆形的“气泡”,以及background 和 animation 属性来设置背景…...
7.23模拟赛总结 [数据结构优化dp] + [神奇建图]
目录 复盘题解T2T4 复盘 浅复盘下吧… 7:40 开题 看 T1 ,起初以为和以前某道题有点像,子序列划分,注意到状态数很少,搜出来所有状态然后 dp,然后发现这个 T1 和那个毛关系没有 浏览了一下,感觉 T2 题面…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
