首页 > 技术文章 > 面向对向---封装

wang-xing-hao 2019-07-11 21:00 原文

类的三大特性 之 封装

  1. super

    1. 在py3中怎样用?在py2(新式类/经典类)中怎样用

      1. 在py3中super().func()
      2. 在py2中新式类super(子类的名字,子类的对象).函数名()
      3. 在py2中经典类中super().func()
    2. 在单继承中执行父类的同名方法的时候怎么用?

      1. 用法:super().func()
      2. 在单继承的时候就是找父类
    3. super方法和mro方法的关系是什么

      1. super是按照mro顺序来寻找当前类的下一个类
  2. 封装

    1. 广义上的封装

      1. 把属性和方法装起来,在外部不能直接调,需要通过类名的方式调用
    2. 狭义上的封装

      1. 把属性和方法藏起来,在外部不能调用,只能在内部偷偷调用
    3. 使用私有的三种情况

      1. 不想让你看也不想让你改
      2. 可以让你看但不让你改
      3. 可以看也可以改,但是要求你按照我的规则改
    4. 封装的语法

      1. 私有的静态变量
      2. 私有的实例变量
      3. 私有的绑定方法
    5. 私有的特点

      1. 私有的可以在内部使用
      2. 私有的不能在外部使用
      3. 私有的也不可以在子类中使用
    6. 原理

      1. 私有在内部是如何变形的?

        1. 在类的内部使用的时候,自动把当前这句话所在的类的名字拼在私有变量前完成变形
        class User:
            __Country = 'China'
            __Role = '法师'
            def func(self):
                print(self.__Country)#在内部调用的时候会自动帮你加上类名
          (_User__Country)
        print(User.__Country)在类的外部调不到是因为python没有自动为你加_User
        
      2. 私有在哪里定义的时候变形

        1. 当你在类内部调用私有类的时候就会发生变化
  3. 类中变量的级别,那些是python支持的,那些是python不支持

    1. 公有的
      1. public 公有的 类内类外都能用,父类子类都能用 python支持
    2. 保护的
      1. protect 保护的 类内能用,父类子类都能用,类外不能用 python不支持
    3. 私有的
      1. private 私有的 本类的类内部能用,其他地方都不能用 python支持

推荐阅读