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

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编程中的应用水平

http://www.lryc.cn/news/405771.html

相关文章:

  • Linux云计算 |【第一阶段】SERVICES-DAY2
  • el-upload照片墙自定义上传多张图片(手动一次性上传多张图片)包含图片回显,删除
  • 三星Unpacked发布会即将举行:有新款折叠屏手机,还有智能戒指
  • 【Python】Matplotlib简要教程
  • 数驭未来,景联文科技构建高质大模型数据库
  • 视频汇聚平台EasyCVR启动出现报错“cannot open shared object file”的原因排查与解决
  • VMware 安装完,设备管理器中没有虚拟网卡(vmnet0、wmnet1、vmnet8) / 虚拟网络编辑器中没有桥接模式
  • 构建高效Node.js中间层:探索请求合并转发的艺术
  • 中断和EXIT原理介绍
  • vcpkg或者命令行需要设置代理时如何设置
  • tensorflow安装及数据操作----学习笔记(一)
  • 顺序表和单链表的经典算法题
  • python基础知识点(蓝桥杯python科目个人复习计划71)
  • 【大数据专题】Flink题库
  • Python鲁汶意外莱顿复杂图拓扑分解算法
  • 【C++】类和对象之继承
  • 如何在LlamaIndex中使用RAG?
  • css气泡背景特效
  • 7.23模拟赛总结 [数据结构优化dp] + [神奇建图]
  • MySQL-视 图
  • PHP SimpleXML
  • 【Spring Boot 自定义配置项详解】
  • 电机相位接线错误导致的潜在问题
  • react中如何mock数据
  • 通过Faiss和DINOv2进行场景识别
  • 新手入门基础Java
  • 2024最新版虚拟便携空调小程序源码 支持流量主切换空调型号
  • 前端在浏览器总报错,且获取请求头中token的值为null
  • html+css前端作业 王者荣耀官网6个页面无js
  • 在windows上使用Docker部署一个简易的web程序