首页 > 其他 > 详细

4.8课堂

时间:2020-04-09 01:05:34      阅读:79      评论:0      收藏:0      [点我收藏+]
 

一、一言简释:封装是面向对象三大特征的最核心的一个特征,封装的结果是隐藏属性。

二、封装数据

  1、在数据的变量名前面加上__,就会实现对外隐藏的效果,类外无法通过__变量名访问到该变量,但是可以通过_类名__变量名访问到,所以说封装并不是完全屏蔽了外界的访问,仅仅是语法上的变形。

class Aaa:
    __x = 1
print(Aaa.__x)  # 报错
print(Aaa._Aaa__x)  # 结果为 1

  2、封装变形会在类的定义阶段统一执行,所以类内部可以对封装数据进行访问。

技术分享图片
class Aaa:
    __x = 1
    def look(self):
        print(self.__x)
obj_1 = Aaa()
obj_1.look()  # 结果为 1
技术分享图片

  3、封装只能在定义类的时候使用,定义完的类,后续新增的数据无法被封装。

class Aaa:
    __x = 1
Aaa.__y = 2
print(Aaa.__y)  # 结果为 2

  4、在定义类时,可以封装对象的属性。

技术分享图片
class Aaa:
    def __init__(self,name):
        self.__name = name
obj_1 = Aaa(‘tom‘)
# print(obj_1.__name)  # 报错
print(obj_1._Aaa__name)  # 结果为 tom
技术分享图片

  5、封装的目的:是为了限制外界对数据的直接操作,可以在类体内增设接口来供外界间接操作,接口可以附加一系列逻辑来定制操作条件。

技术分享图片
class Aaa:
    __x = 1
    def change(self,new_val):
        if type(new_val) is not int:
            print(‘必须改为数字‘)
            return
        Aaa.__x = new_val
obj_1 = Aaa()
obj_1.change(‘aaa‘)
print(Aaa._Aaa__x)  # 结果为 1
obj_1.change(123)
print(Aaa._Aaa__x)  # 结果为 123 
技术分享图片

二、封装功能:能够隔离复杂度,将类内一系列功能封装为一个功能

技术分享图片
class Func:
    def __step_1(self):
        pass
    def __step_2(self):
        pass
    def __step_3(self):
        pass
    def total_step(self):
        Func.__step_1(self)
        Func.__step_2(self)
        Func.__step_3(self)

4.8课堂

原文:https://www.cnblogs.com/haliluyafeng/p/12664001.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!