当前位置: 首页 > 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.lryc.cn/news/576120.html

相关文章:

  • 鸿蒙HarmonyOS 5小游戏实践:记忆翻牌(附:源代码)
  • DHT11 STM32 HAL驱动库 整数
  • .NetCore+Vue快速生产框架开发详细方案
  • Chrome浏览器访问https提示“您的连接不是私密连接”问题解决方案
  • 已对接Shopee、Lazada、亚马逊等知名海外电商平台!商派DigiOS-OMS业务中台助力品牌扩展全球业务
  • 《Opto-Electronic Advances》热点论文速览(2025)
  • linux中python虚拟环境和版本的选择
  • 【Linux手册】进程终止:进程退出和信号的响应机制
  • VB.NET,C#字典对象来保存用户数据,支持大小写
  • Selenium 多窗口截图(窗口切换)二次封装方法详解 —— Python 实践
  • 【Python】实现对LGBT+ rights worldwide (2025)数据集的可视化展示
  • MySQL在C中常用的API接口
  • TiDB AUTO_RANDOM 超大主键前端精度丢失排查:JavaScript Number 限制与解决方案
  • 玩转Linux CAN/CAN FD—SocketCAN的使用
  • opensuse安装rabbitmq
  • 【编译原理】期末复习知识总结
  • 【大数据】大数据产品基础篇
  • 【开源项目】「安卓原生3D开源渲染引擎」:Sceneform‑EQR
  • ArcGIS Pro利用擦除工具,矢量要素消除另一矢量部分区域
  • 【网络安全】密码学知识普及
  • 高可用与低成本兼得:全面解析 TDengine 时序数据库双活与双副本
  • OkHttp 简单配置
  • pandas---使用教程
  • 解构SAP RISE与Cloud ERP授权新政:从许可模式到迁移策略的深度指南
  • (一)miniconda安装配置
  • Dubbo服务调用超时问题解决方案
  • Hyperledger Fabric 入门笔记(二十)Fabric V2.5 测试网络进阶之Tape性能测试
  • Linux tcp_info:监控TCP连接的秘密武器
  • 【RAG面试题】如何获取准确的语义表示
  • MCP-安全(代码实例)