zoukankan      html  css  js  c++  java
  • 封装

    封装就指的是把属性装进一个容器中,有隐藏的意思,但这种隐藏对外不对内。

    封装数据属性的目的是为了将数据属性封装起来,类外部的使用就无法直接操作该数据属性了,需要类内部开一个接口给使用者 而且类的设计者乐园在接口上附加任意的逻辑

    来严格控制使用者对数据的操作

    而封装函数属性的目的是隔离复杂度

    如何封装呢?

    只要在属性前加上__开头 ,该属性就会被隐藏

    隐藏具备的特点:

    1.只是一种语法意义上的变形,即__开头的属性会在检测语法时发生变形成_类名__属性名

    2.这种隐藏是对外不对内的,因为类内部检测语法时所用的代码都会统一发生变形

    3.这种变形只会在检测语法时发生一次 在类定义之后新增的__开头的属性不会发生变形

    4.如果父类不想让子类覆盖自己的属性 可以在自己的属性前加上__开头

    class A:
        def __f1(self):
            print('A.f1')
    
        def test(self):
            self.__f1()
        
     
    class B(A):#子类
        def__f1(self):
            print('B.f1')
    
    obj=B()
    obj.test()
    #验证父类属性前加上__不会被子类覆盖
    
    
    class Foo:
        __x=111
        def __init__(self,m):
            self.__m=m
    
        def f1(self):
            print(self.__m)
            print(self.__x)#内部接口
    
    #obj = Foo(12)
    ==>print(obj.f1())
    封装接口
  • 相关阅读:
    梅小雨 20180912-3 词频统计
    梅小雨20190912-2 命令行
    梅小雨20190905-1 每周例行报告
    梅小雨20190905-2 博客作业
    梅小雨20190905-3 命令行和控制台编程
    20190919-4 单元测试 结对
    20190919-2 功能测试
    20190919-1 每周例行报告
    20190919-6 四则运算试题生成
    20190919-5 代码规范
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9846004.html
Copyright © 2011-2022 走看看