阶段二开始-第一章—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