• 4.8课堂


    面向对象编程之封装

     

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

    二、封装数据

      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)
  • 相关阅读:
    Linux .下Apache的安装
    从程序员到项目经理:项目管理三大目标
    linux下mysql安装
    Linux学习之常用命令
    转载:struts2拦截器
    el自定义函数库
    JAVA正则表达式小结
    JSP自定义标记
    JAVA动态代理(JDK和CGLIB)
    JAVA反射机制
  • 原文地址:https://www.cnblogs.com/haliluyafeng/p/12664001.html
Copyright © 2020-2023  润新知