封装是面向对象编程的三大特征之一
1、封装的作用
1.1、隔离复杂性
将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。这样,无序关心方法内部的具体实现细节,从而隔离了复杂度。在编程语言中,对外提供接口。
比如可以写一个处理数据并将数据自动入库的类,这就是一个功能,下次有这个需求的时候就可以直接调用这个类。
1.2、保护隐私:
在类对象的内部通过访问控制把某些属性和方法隐藏起来,不允许在类对象的外部直接访问,而是在类对象的内部对外提供公开的接口方法(例如getter和setter)以访问隐藏的信息。这样,就对隐藏的信息进行了保护。
控制访问指的是:控制类对象的属性和方法在类对象的外部是否可以直接访问。
如果在类对象的某个属性或方法前添加两个下划线__,那么在类对象的外部就不能直接访问该属性或方法
控制访问之双下划线之所以不能在类对象的外部直接访问以双下划线开头的属性或方法,是因为:Python解释器对外把属性或方法__xxx改成了另外的名字:_类名__xxx。所以,在类对象的外部仍然可以通过_类名__xxx访问属性或者方法__xxx。但是强烈建议不要这样访问,因为不同版本的Python解释器可能会把属性或方法__xxx改成不同的名字。
双下划线外部访问方式可以直接在类对象的外部直接绑定名为__xxx的属性和方法,这与在类对象名为__xxx的属性和方法是不同的。
除了在类对象的属性和方法前添加两个下划线__,还可以在类对象的属性和方法前添加单下划线_,这样表示在类对象的外部可以直接访问属性和方法,但是不建议这样做。
网友评论