学Python编程开发怎么样?封装的实现方法是什么?封装,即隐藏对象的属性和实现细节,仅对外公开接口。封装思想在编程工作中非常重要,是每个程序员的基本功。下面千锋小编就给大家讲解一下封装原理及实现方法。
10年积累的网站设计制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有苏仙免费网站建设让你可以放心的选择与我们合作。在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技术,才不至于浪费时间、金钱和精力。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。