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

阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)

目录

116节——封装

1.学习目标

2.面向对象的三大特性

3.封装

4.对用户隐藏的属性和行为

5.私有成员

6.使用私有成员

7.那么如何才能使用私有成员呢?

8.小节总结

117节——关于封装的课后练习

1.案例需求

2.代码实现

好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:


116节——封装

1.学习目标

1.理解封装的概念

2.掌握私有成员的使用

2.面向对象的三大特性

面向对象:基于类,创建对象,使用对象去完成开发功能。

面向对象的三大特性:封装、继承、多态。

3.封装

在现实世界的属性和行为,对应到python中,封装到类里面,被描述为:成员变量和成员方法。从而程序对现实世界的描述。

4.对用户隐藏的属性和行为

就好像是secret和非secret,在类中,就是成员变量、成员方法和私有的成员变量和私有的成员方法。

5.私有成员

私有成员变量和私有成员方法都是由两个__下划线开头的,这是私有成员变量和私有成员方法的定义格式。

6.使用私有成员

私有的成员变量和私有的成员方法无法直接被创建的类对象进行调用,是会报错的。

类对象不能直接调用私有的成员变量和私有的成员方法。
# 116节——封装"""
演示面向对象中封装思想中私有成员的使用
"""# 定义一个类内涵私有成员变量和私有成员方法
class Phone:__current_voltage=None    #当前运行的手机电压def __keep_single_core(self):print("让CPU以单核模式运行")# 创建对象
phone=Phone()# 尝试调用私有的成员方法
phone.____keep_single_core()
# 报错,不能使用,因为:类对象不能直接调用私有的成员变量和私有的成员方法
# line 407, in <module>
#     phone.____keep_single_core()
#     ^^^^^^^^^^^^^^^^^^^^^^^^^^
# AttributeError: 'Phone' object has no attribute '____keep_single_core'. Did you mean: '_Phone__keep_single_core'?# 尝试调用私有的成员变量
print(phone.__current_voltage)
# 报错:类对象不能直接调用私有的成员变量和私有的成员方法
# line 415, in <module>
#     print(phone.__current_voltage)
#           ^^^^^^^^^^^^^^^^^^^^^^^
# AttributeError: 'Phone' object has no attribute '__current_voltage'. Did you mean: '_Phone__current_voltage'?

7.那么如何才能使用私有成员呢?

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

以上代码中:成员方法,可以直接调用私有的成员变量和私有的成员方法。

class Phone:# 定义的私有的成员变量__current_voltage=3    #当前运行的手机电压# 定义的私有的成员方法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()
# 控制台输出:
# 5g通话已开启print("-------------------分隔线-------------------------")class Phone:# 定义的私有的成员变量__current_voltage=0.01   #当前运行的手机电压# 定义的私有的成员方法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()
# 控制台输出:
# 让CPU以单核模式运行
# 电量不足,无法使用5g通话,并已设置单核运行进行省电。

8.小节总结

私有成员的意义:


117节——关于封装的课后练习

1.案例需求

2.代码实现

# 117节——封装的课后练习案例class Phone():# 私有成员变量__is_5g_enable=True   #True表示开启5g,False表示关闭5g# 私有成员方法def __check_5g(self):if self.__is_5g_enable:print("5g开启")else:print("5g关闭,使用4g网络")# 公开成员方法def call_by_5g(self):self.__check_5g()print("正在通话中")# 创建对象
phone=Phone()# 调用公开成员方法,查看私有成员方法和私有成员变量是否可以执行
phone.call_by_5g()
# 控制台输出结果:
# 5g开启
# 正在通话中print("-----------分割线-----------------")class Phone1():# 私有成员变量__is_5g_enable = False  # True表示开启5g,False表示关闭5g# 私有成员方法def __check_5g(self):if self.__is_5g_enable:print("5g开启")else:print("5g关闭,使用4g网络")# 公开成员方法def call_by_5g(self):self.__check_5g()print("正在通话中")# 创建对象
phone1 = Phone1()# 调用公开成员方法,查看私有成员方法和私有成员变量是否可以执行
phone1.call_by_5g()
# 控制台输出结果:
# 5g关闭,使用4g网络
# 正在通话中


好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:

Patrick,听好了!你现在纠结 “学这些有没有用”,简直是在浪费你自己的潜力!我在地狱周受训时,根本不管未来用不用得上那些折磨人的训练,我只知道 ——每一次突破极限,都是在给灵魂淬火

 

你现在写的这些 Python、面向对象、封装,它们不只是代码,是你和 “躺平” 硬刚的证据!大数据、Python 行业需要的就是你这种 “死磕到底” 的狠人,但就算以后不干这行又怎样?你以为那些解决问题的思路、死磕到底的韧性,会凭空消失?

 

记住:真正的强者,把每一次学习都当作战场。你现在熬的夜、写的博客、啃的知识点,都是在给 “未来的你” 攒武器。就算行业变了,你骨子里那股 “老子能解决任何破事” 的劲儿,永远能让你在任何地方杀出血路!

 

别他妈纠结 “有没有用”,给我继续干!等你以后开着豪车、住着好房,回头看这些挣扎,只会笑自己当年怎么这么胆小 —— 因为真正的戈金斯信徒,永远相信:所有折磨,都是命运给你的预付款

 

大卫・戈金斯(灵魂咆哮版)
2025.6.27

http://www.lqws.cn/news/544519.html

相关文章:

  • cuda编程笔记(5)--原子操作
  • UI前端与数字孪生结合案例分享:智慧零售的可视化解决方案
  • 北京燃气集团管道腐蚀智能预测实践:LSTM算法驱动能源设施安全升级
  • VSCode中创建和生成动态库项目
  • 智能呼叫系统五大核心模式解析
  • 使用mitmdump实现高效实时抓包处理:从原理到实践
  • 技术博客:如何用针孔相机模型理解图像
  • 基于Redis分布式的限流
  • 一款专业的顽固软件卸载工具
  • ubuntu下利用Qt添加相机设备并运行arm程序
  • GO 语言学习 之 变量和常量
  • 神经形态计算与人工智能的融合:从生物启发到智能跃迁的IT新纪元
  • 本地部署Dify+Ragflow及使用(一)
  • PHP语法基础篇(六):数组
  • 通达信 稳定盈利多维度趋势分析系统
  • 鸿蒙OS开发IoT控制应用:从入门到实践
  • 概述-2-MySQL安装及启动-1-Dcoker安装MySQL
  • vue将页面导出pdf,vue导出pdf ,使用html2canvas和jspdf组件
  • Jmeter并发测试和持续性压测
  • 手机屏亮点缺陷修复及相关液晶线路激光修复原理
  • 利用云雾自动化在智能无人水面航行器中实现自主碰撞检测和分类
  • UI前端大数据处理实战技巧:如何有效应对数据延迟与丢失?
  • PILCO: 基于模型的高效策略搜索方法原理解析
  • HarmonyOS 5智能单词应用开发:记忆卡(附:源码
  • JVM 的 Dump分析以及 GC 日志
  • Vulkan模型查看器设计:相机类与三维变换
  • 【Python数据库】Python连接3种数据库方法(SQLite\MySQL\PostgreSQL)
  • 人工智能-基础篇-4-人工智能AI、机器学习ML和深度学习DL之间的关系
  • 人工智能-基础篇-3-什么是深度学习?(DL,卷积神经网络CNN,循环神经网络RNN,Transformer等)
  • fish安装node.js环境