学Python编程开发怎么样?封装的实现方法是什么?封装,即隐藏对象的属性和实现细节,仅对外公开接口。封装思想在编程工作中非常重要,是每个程序员的基本功。下面千锋小编就给大家讲解一下封装原理及实现方法。
在Python中,“封装”是指将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类)。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
封装原则有两个:1)将不需要对外提供的内容都隐藏起来;2)把属性都隐藏,提供公共方法对其访问。
注意,封装数据主要原因是保护私隐,将数据隐藏起来不是目的。隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对数据属性操作的严格控制。
封装特性property
将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则。而property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值。
面向对象的封装有三种方式:
【public】这种其实就是不封装,是对外公开的。
【protected】这种封装方式对外不公开,但对朋友(friend)或者子类(形象的说法是“儿子”,但我不知道为什么大家不说“女儿”,就像“parent”本来是“父母”的意思,但中文都是叫“父类”)公开。
【private】这种封装对谁都不公开。
代码示例:
class Foo:
def __init__(self,val):
self.__NAME=val #将所有的数据属性都隐藏起来
@property
def name(self):
return self.__NAME #obj.name访问的是self.__NAME(这也是真实值的存放位置)
@name.setter
def name(self,value):
if not isinstance(value,str): #在设定值之前进行类型检查
raise TypeError('%s must be str' %value)
self.__NAME=value #通过类型检查后,将值value存放到真实的位置self.__NAME
@name.deleter
def name(self):
raise TypeError('Can not delete')
f=Foo('egon')print(f.name)# f.name=10 #抛出异常'TypeError: 10 must be str'del f.name #抛出异常'TypeError: Can not delete'
Python并没有在语法上把它们三个内建到自己的class机制中,在C++里一般会将所有的所有的数据都设置为私有的,然后提供set和get方法(接口)去设置和获取,在Python中通过property方法可以实现。一个静态属性property本质就是实现了get、set、delete三种方法。
总之,Python开发的前景是非常好的。如果确实不知道怎么办,可以选择专业的学习方式,先去试听看看,只有这样,你才能知道这个学习班是否真正适合你,才能知道你是不是适合学Python技术,才不至于浪费时间、金钱和精力。
领取专属 10元无门槛券
私享最新 技术干货