python全栈开发day20-类的三大特性继承、多态、封装

1  继承

    1.怎么继承,父类和子类

       class 类名(父类):pass

      除了__init__下对象属性不能自动继承外,其他的类属性和动态方法,子类对象都可以访问到。

    2.子类对象查找属性的顺序,对象现在自己的命名空间找,找不到会到通过执行类指针到自己类中找,再找不到就会到父类中去找。

      

      3.子类怎么复用父类的动态方法,两种方法:以__init__为例。

      1)、父类名.__init__(self,.....)

      2)、super().__init(......)  或super(子类名,self).__init__(....)

      具体执行流程:

      

扫描二维码关注公众号,回复: 1092364 查看本文章


      

    4.类的组合

                   组合表示类的‘有‘ 关系,一个类可以是另一个类的属性。

     而继承是表示类之间‘是‘的关系,可以节省类之间公有的方法和属性

       5.单继承和多继承

     单继承所有面向对象语言都有,多继承python有。

    6.继承的作用。

      减少代码的重用 提高代码可读性 规范编程模式

    

      7.抽象类和接口类:接口提取了一群类共同的函数,可以把接口当做一个函数的集合。

    # 在python代码中 抽象类和接口类没有明显的区别
    # 主要就是维持了一种规范

    目的:是为了规范继承这个类的子类,必须实现被@abstractmethod修饰的方法

    抽象类:

       #在类的继承位置指定metaclass==ABCMeta

         #在指定的抽象方法上面用@abstractmethod装饰器装饰

             # 特点:抽象类和接口类不能被实例化

    抽象类和接口类的区别:

      1) 多继承问题:

        抽象类:尽量避免多继承

        接口类:鼓励多接口继承

      2)方法实现:

        抽象类:可以对一些抽象方法做一些基础实现

        接口类:任何方法都是一种规范,具体功能的实现在子类中完成。

    8、两个原则:

      接口隔离原则:使用多个专门的接口,而不使用单一的总接口。即客户端不应该依赖那些不需要的接口。

      依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。换言之,要针对接口编程,而不是针对实现编程。  

    9、钻石继承:

      1)经典类和新式类的区别:

        子类和父类显示继承object类就是新式类,否则就是经典类,只在python2中区分,python3中全部都是新式类。  

      2)钻石继承

        新式类:广度优先

        

        

        经典类:深度优先。                 

2.  多态

3.  封装

猜你喜欢

转载自www.cnblogs.com/wuchenggong/p/9088512.html