Encapsulation
封装
在面向对象程序设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函数接口的实现细节部分包装、隐藏起来的方法。同时,它也是一种防止外界调用端,去访问对象内部实现细节的手段,这个手段是由编程语言本身来提供的。 适当的封装,可以将对象使用接口的程序实现部分隐藏起来,不让用户看到,同时确保用户无法任意更改对象内部的重要数据。它可以让代码更容易理解与维护,也加强了代码的安全性。
自己的理解
简单来说,封装有两个优点
- 隐藏方法的具体实现细节,只提供给调用方调用方法的接口。(
简化代码量
) - 可以将属性和方法的私有化,就是将类或者函数中的某些属性、方法限制在内部区域之内,外部无法调用。(
提高安全性
)
class Person(object):
def __init__(self):
self.me = 'Da'
self.__name = 'LotusChing'
def __python(self):
return 'I love Python.'
def go(self):
print('Which language do you like?')
return self.__python()
@property
def name(self):
return self.__name
if __name__ == '__main__':
p = Person()
print(p.go())
print(p.name)
p.__python
输出
Which language do you like?
Traceback (most recent call last):
I love Python.
File "F:/Python/Learn Through/oop1.py", line 23, in <module>
LotusChing
p.__python
AttributeError: 'Person' object has no attribute '__python'
可以看到封装生效了,只有go
方法通过内部才能调用__python
方法
访问私有属性是通过@property
,将方法转换为属性,然后将私有属性返回出来