• 初始继承之顺序/深度优先及广度优先



    面向对象的三大特性:继承,多态,封装
    初识别继承:
                     作为继承者的类的定义时,在这个类名的括号内加入被继承的类的名字,被继承的类被称为父类或基类,继承者被称为子类

                     使用子类类名及其实例化产生的对象,可以访问父亲的任何方法或变量

    执行的顺序是先找对象,再找类,再找父类.也就是说:

    如果想只执行父类的方法,则子类中不要定义父类同名的方法
    如果想只执行子类的方法,在子类中单独创建这个方法即可
    既要执行父类的方法又要子类的话:
    1.

    如果两个父子都有init,先且只执行子类的)在子类的init里,使用类名调用父类的init,被调用的父类的init形参需要加到子类的init定义里
    子类的就完成了形参变实参的过程,子类中的self在实例化时自动变成对象(名),调用父类就是普通的执行函数。是一个嵌套函数的过程。
    2.
    super().i方法名(参数,除self)
    效果一样,且工作中只用后者,括号内可省略,一般不用1.这种类名.方法。

    真正的继承:分为单继承和多继承。
    类:经典类和新式类
    凡是继承object的类都是新式类,python3里的都是新式类
    不继承object的是经典类,只存在于python2,2.x中默认都不继承object.

    对于继承的顺序而言:

    单继承,两种类的查询顺序一样,一层一层往上找
    多继承,新式类:遵循广度优先;经典类:深度优先。
    广度优先:每个节点,走且只走一次。在一条路进行到倒数第二层时,如果最终的基类别的路能达到,就换;不能就走完这个类。一条路走到倒数第二级开始判断,如果其他路可以走到终点就切换到那条,不然就继续走。

    在工作中,使用类名.mro()查询类的继承顺序即可。上述内容是面试题需要.

    深度优先:一条路走到黑,就走就行.

  • 相关阅读:
    bzoj 4197 寿司晚宴
    Codeforces Round #429 (Div. 2)ABC
    Codeforces Round #386 (Div. 2) E
    UESTC 电子科大专题训练 数论 L
    UESTC 电子科大专题训练 数论 E
    Codeforces Round #396 D
    UESTC 电子科大专题训练 DP-E
    UESTC 电子科大专题训练 数据结构 L
    UESTC 电子科大专题训练 数据结构 K
    UESTC 电子科大专题训练 数据结构-E
  • 原文地址:https://www.cnblogs.com/shachengcc1/p/11135554.html
Copyright © 2020-2023  润新知