封装
封装(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
python基础(面向对象(封装、私有化封装))
最新推荐文章于 2025-11-23 13:23:53 发布
本文探讨了Python中的封装概念,解释了封装如何隐藏对象的内部细节,以提高代码的抽象性和隔离性。文章通过示例展示了封装的重要性,并提到了Python中的私有属性和方法,以及如何通过单下划线和双下划线实现不同程度的封装。此外,还总结了封装带来的好处,包括简化代码定位、提高代码清晰度以及避免全局变量冲突。

最低0.47元/天 解锁文章
1068

被折叠的 条评论
为什么被折叠?



