python基础(面向对象(封装、私有化封装))

本文探讨了Python中的封装概念,解释了封装如何隐藏对象的内部细节,以提高代码的抽象性和隔离性。文章通过示例展示了封装的重要性,并提到了Python中的私有属性和方法,以及如何通过单下划线和双下划线实现不同程度的封装。此外,还总结了封装带来的好处,包括简化代码定位、提高代码清晰度以及避免全局变量冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

封装
封装(encapsulation)指的是向外部隐藏不必要的细节。这听起来有点像多态(无需知道对象的内部细节就可使用它)。这两个概念很像,因为它们都是抽象的原则。它们都像函数一样,可帮助你处理程序的组成部分,让你无需关心不必要的细节。
但封装不同于多态。多态让你无需知道对象所属的类(对象的类型)就能调用其方法,而封装让你无需知道对象的构造就能使用它。听起来还是有点像?下面来看一个使用了多态但没有使用封装的示例。假设你有一个名为OpenObject的类
>>> o = OpenObject() # 对象就是这样创建的
>>> o.set_name('Sir Lancelot') 
>>> o.get_name() 
'Sir Lancelot'
你(通过像调用函数一样调用类)创建一个对象,并将其关联到变量o,然后就可以使用方法set_name和get_name了(假设OpenObject支持这些方法)。一切都看起来完美无缺。然而,如果o将其名称存储在全局变量global_name中呢?
>>> global_name 
'Sir Lancelot' 
这意味着使用OpenObject类的实例(对象)时,你需要考虑global_name的内容。事实上,必须确保无人能修改它。
>>> global_name = 'Sir Gumby' 
>>> o.get_name() 
'Sir Gumby' 
如果尝试创建多个OpenObject对象,将出现问题,因为它们共用同一个变量。
>>> o1 = OpenObject() 
>>> o2 = OpenObject() 
>>> o1.set_name('Robin Hood') 
>>> o2.get_name() 
'Rob

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值