Python学习从0到1 day20 第二阶段 面向对象 ② 封装

缘分 朝生暮死犹如露水

                   —— 24.4.1

学习目标:

1.理解封装的概念

2.掌握私有成员的使用

一、面向对象三大特性:

面向对象编程,是许多编程语言都支持的一种编程思想

简单理解是:基于模板(类)去创建实体(对象),使用对象完成功能开发

面向对象包含三大主要特性:

①封装        ②继承        ③多态

二、封装

封装表示的是,将现实世界事物的:

①属性

②行为

封装到类中,描述为:

①成员变量

②成员方法

从而完成程序对现实世界事物的描述

对用户隐藏的属性和行为

现实世界中的事物,有属性和行为

但是不代表这些属性和行为都是开放给用户使用的

私有成员

既然现实事物有不公开的属性和行为,那么作为现实事物在程序中映射的类,也应该支持

类中提供了私有成员的形式来支持

        ①私有成员变量

        ②私有成员方法

定义私有成员变量的方式非常简单,只需要:

        ①私有成员变量:变量名以__开头(2个下划线)

        ②私有成员方法:方法名以__开头(2个下划线)

即可完成私有成员的设置

使用私有成员

        ①私有方法无法直接被类对象使用

        ②私有变量无法赋值,也无法获取值

案例:

'''
演示面向对象封装思想中私有成员的使用
'''# 定义一个类,内含私有成员变量和私有成员方法
class Phone:__current_voltage = None    # 当前手机运行电压def __keep_single_core(self):print("让CPU以单核模式运行")phone = Phone()
phone.__keep_single_core()
print("__current_voltage")

私有成员无法被类对象使用,但是可以被其他的成员使用

'''
演示面向对象封装思想中私有成员的使用
'''# 定义一个类,内含私有成员变量和私有成员方法
class Phone:__current_voltage = 1   # 当前手机运行电压def __keep_single_core(self):print("让CPU以单核模式运行")def call_by_5G(self):if self.__current_voltage >= 1:print('5G通话已开启')else:self.__keep_single_core()print("电量不足,无法使用5g通话,已设置为单核运行进行省电")phone = Phone()
phone.call_by_5G()

三、总结

1.封装的概念是指?

        将现实世界事物在类中描述为属性和方法,即为封装

2.什么是私有成员?为什么需要私有成员?

        现实事物有部分属性和行为是不公开对使用者开放的,同样在类中描述属性和方法的时候也需要达到这个要求,就需要定义私有成员了

3.如何定义私有成员?

        成员变量和成员方法的命名均以__作为开头即可(2个下划线)

4.私有成员的访问限制?

        类对象无法访问私有成员

        类中的其他成员可以访问私有成员

四、思考

私有成员的定义我们已经了解了,但是他有什么实际的意义吗?

        在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)

五、练习

练习        设计带有私有成员的手机

设计一个手机类,内部包含:
        私有成员变量:is_5g_enable,类型bool,True表示开启5g,False表示关闭5g

        私有成员方法:__check_5g(),会判断私有成员_is_5g_enable的值

        若为True,打印输出:5g开启
        若为False,打印输出:5g关闭,使用4g网络

        公开成员方法:call_by_5g(),调用它会执行
        调用私有成员方法:__check_5g(),判断5g网络状态
        打印输出:正在通话中
        运行结果:5g关闭,使用4g网络正在通话中
 

通过完成这个类的设计和使用,体会封装中私有成员的作用
        对用户公开的:     call_by_5g()方法
        对用户隐藏的:__is_5g_enable私有变量和__check_5g私有成员

'''
练习 设计带有私有成员的手机设计一个手机类,内部包含:
私有成员变量:is_5g_enable,类型bool,True表示开启5g,False表示关闭5g
私有成员方法:__check_5g(),会判断私有成员_is_5g_enable的值若为True,打印输出:5g开启若为False,打印输出:5g关闭,使用4g网络公开成员方法:call_by_5g(),调用它会执行调用私有成员方法:__check_5g(),判断5g网络状态打印输出:正在通话中
运行结果:5g关闭,使用4g网络正在通话中通过完成这个类的设计和使用,体会封装中私有成员的作用对用户公开的: call_by_5g()方法对用户隐藏的:__is_5g_enable私有变量和__check_5g私有成员
'''# 设计一个类,用来描述手机
class Phone:# 提供私有成员变量:__is_5g_enable__is_5g_enable = False  # 私有成员变量:is_5g_enable,类型bool,True表示开启5g,False表示关闭5g# 提供私有成员方法def __check_5g(self):if self.__is_5g_enable == True:print("5g开启")else:print("5g关闭,使用4g网络")# 提供公开成员方法def call_by_5g(self):self.__check_5g()print("正在通话中")phone = Phone()
phone.call_by_5g()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

枚举---算法

1、定义 枚举算法:也称之为穷举算法,这种算法就是在解决问题的时候去使用所有的方式去解决这个问题,会通过推理去考虑事件发生的每一种可能,最后推导出结果。优点:简单粗暴,它暴力的枚举所有可能&#xff…

Mysql故障和优化

一、MySQL故障 二、MySQL优化 1.硬件优化: 2.数据库设计与规划 1.提前估计数据量,使用什么存储引擎 2.数据库服务器专机专用,避免额外的服务可能导致的性能下降和不稳定性 3.增加多台服务器,以达到稳定、高效的效果。主从同步、…

风控系统:通过净值及盈亏开启和关闭自动交易

一、风控对交易员的好处 帮助交易员执行交易纪律并保护他们的交易资金。 纪律风控:对不符合交易纪律的交易执行风控,对交易纪律性差的交易员执行约束操作。净值风控:对满足条件的净值执行风控,防止交易员的账户净值过度下降。手数…

Memory Analyzer Tool使用教程

下载地址&#xff1a;https://eclipse.dev/mat/previousReleases.php 下载JDK8对应的MAT版本 使用jps查看pid jps 使用jmap生成heap dump文件 jmap -dump:formatb,live,filexxx.bin <pid> 使用MAT打开heap dump文件 查看GC Roots

【Linux入门】Linux简史

Linux 是什么&#xff1f;Linux 是一款叫做操作系统的软件。 操作系统这款软件有什么样的意义呢&#xff1f;简单来说&#xff0c;比如有顾客买了一台笔记本电脑&#xff0c;这台笔记本电脑由电脑硬件组成&#xff0c;在这堆硬件上一定搭载了一款操作系统。正因为操作系统存在&…

ssm013小型企业办公自动化系统的设计和开发+vue

小型企业办公自动化系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对小型企业办公信息管理混乱&am…

git删除某次commit的代码

这里写目录标题 1.问题背景2.问题拆解尝试&#xff1a;a.使用git reset --hard HEAD &#xff08;不行&#xff0c;局限性太大&#xff09;尝试&#xff1a;b.使用git rebase -i HEAD &#xff08;可以&#xff0c;但push -f不太友好&#xff09;尝试&#xff1a;c.使用git rev…

ETL工具-nifi干货系列 第六讲 处理器JoltTransformJSON

1、处理器作用 使用Jolt转换JSON数据为其他结构的JSON,成功的路由到success,失败的failure。处理JSON的实用程序不是基于流的&#xff0c;因此大型JSON文档转换可能会消耗大量内存。 Jolt&#xff1a;JSON 到 JSON 转换库&#xff0c;用 Java 编写&#xff0c;其中转换的 &qu…

LINUX笔记温习

目录 DAY1 DAY2 day3&#xff1a; day4 day5 day6 day7 day8 day9 day10 day11 day12 day13 day14 day15 20day DAY1 1、多层级文件夹创建要带-p&#xff1b; 2、创建多文件&#xff0c;要先到该目录下才能创建(第一个目录必须存在才能有效建立)&#xff1b; D…

Golang 内存管理和垃圾回收底层原理(二)

一、这篇文章我们来聊聊Golang内存管理和垃圾回收&#xff0c;主要注重基本底层原理讲解&#xff0c;进一步实战待后续文章 垃圾回收&#xff0c;无论是Java 还是 Golang&#xff0c;基本的逻辑都是基于 标记-清理 的&#xff0c; 标记是指标记可能需要回收的对象&#xff0c…

2023年EI会议论文已见刊/检索进展汇总

2023年录用的会议论文已在SPIE、ACM、IEEE等出版社正式上线见刊&#xff0c;并已陆续完成EI Compendex数据库收录&#xff0c;详情如下&#xff1a; EIECT 2023——IEEE出版&#xff0c;并完成EI收录 会议信息&#xff1a; 第三届电子信息工程与计算机技术国际学术会议&…

探索使用对比损失的孪生网络进行图像相似性比较

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 简介 在计算机视觉领域&#xff0c;准确地测量图像相似性是一项关键任务&#xff0c;具有广泛的实际应用。从图像搜索引擎到人脸识别系统和基于内容的推荐系统&#xff0c;有效比较和查找相似图像的能力非常重要。Siames…

QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题

在 Python 中&#xff0c;深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是用于创建对象副本的两种不同方式。 浅拷贝是创建一个新的对象&#xff0c;该对象与原始对象的内容相同&#xff08;包括内部嵌套对象的引用&#xff09;&…

Higress 基于自定义插件访问 Redis

作者&#xff1a;钰诚 简介 基于 wasm 机制&#xff0c;Higress 提供了优秀的可扩展性&#xff0c;用户可以基于 Go/C/Rust 编写 wasm 插件&#xff0c;自定义请求处理逻辑&#xff0c;满足用户的个性化需求&#xff0c;目前插件已经支持 redis 调用&#xff0c;使得用户能够…

LeetCode刷题:无重复字符的最长子串 详解 【3/1000 第三题】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…

【THM】Active Reconnaissance(主动侦察)-初级渗透测试

介绍 在网络安全模块的第一个房间里,我们主要进行被动侦察。在第二个房间中,我们重点关注主动侦察以及与之相关的基本工具。我们学习使用网络浏览器来收集有关我们目标的更多信息。此外,我们讨论使用简单的工具(例如ping、traceroute、telnet和 )nc来收集有关网络、系统和…

探讨在大数据体系中API的通信机制与工作原理

** 引言 关联阅读博客文章&#xff1a;深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章&#xff1a;深入理解HDFS工作原理&#xff1a;大数据存储和容错性机制解析 ** 在当今数字化时代&#xff0c;数据已经成为企业发展和决策的核心。随着数据规模的不断增长…

计算机组成原理实验(汉字编码实验)

&#xff08;汉字编码实验&#xff09; 海明校验码实验

每天五分钟计算机视觉:如何基于滑动窗口技术完成目标的检测?

汽车检测算法 现在我们想要构建一个汽车检测算法,我们希望输入到算法中一张图片,算法就可以帮助我们检测出这张图片中是否有汽车。 数据集 首先创建一个标签训练集,x是样本,y是标签。我们的训练集最好是被剪切过的图片,剪掉汽车以外的部分,使汽车居于中间位置,就是整张…

LeetCode-240. 搜索二维矩阵 II【数组 二分查找 分治 矩阵】

LeetCode-240. 搜索二维矩阵 II【数组 二分查找 分治 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;从左下角或者右上角元素出发&#xff0c;来寻找target。解题思路二&#xff1a;右上角元素&#xff0c;代码解题思路三&#xff1a;暴力也能过解题思路四&#xff1a;二分…