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 题面…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
