zoukankan      html  css  js  c++  java
  • 03_面向对象之继承

    # 1:什么是继承?跟我来,看下面的代码
    class Father: # (父类 --> 专业术语:基类)
    def f1(self):
    print('我是f1')


    class Sun(Father): # -->(子类 -->专业术语:派生类)
    def f2(self):
    print('我是f2')
    # 在第二个类中,传入另外一个类,就是继承!

    # ---------------------------------------------- #

    # 2:继承有什么用?跟我来,看下面的代码
    class Father: # (父类 --> 专业术语:基类)
    def f1(self):
    print('我是f1')


    class Sun(Father): # -->(子类 -->专业术语:派生类)
    def f2(self):
    print('我是f2')

    obj = Sun()
    obj.f2() # 打印的是谁? --> 我是f2
    obj.f1() # 打印的是谁? --> 我是f1
    # 由上面可以得出,当我们继承了父类(基类),对象调用的方法如果在子类
    # 中没有的话,就会去父类里面找
    # (但是,父类是不能来子类里面找的)如下:
    obj1 = Father()
    obj1.f2() # 运行报错。

    # ---------------------------------------------- #

    # 3: 类的多继承和类的多继承查找顺序
    class Father1: # (父类 --> 专业术语:基类)
    def f1(self):
    print('我是父类的f1')


    class Father2: # (父类 --> 专业术语:基类)
    def f1(self):
    print('我是父类2的f1')

    def f3(self):
    print('我是父类2的f3')


    class Sun(Father1, Father2): # -->(子类 -->专业术语:派生类)
    def f2(self):
    print('我是f2')


    obj = Sun()
    obj.f1() # 打印的是谁? --> 我是父类1的f1
    obj.f3() # 打印的是谁? --> 我是父类1的f3
    # 由上面的打印结果可以得出:调用方法时,
    # 类的多继承查找顺序是:先去子类找,如果没有的话,
    # 就去父1中找, 没有再去父2中找
    # 补充:目前只有python和C++支持多继承,其他基本没有

    # ---------------------------------------------- #

    # 4:继承的执行顺寻:
    # 记住两个原则:
    # 1)self 到底是谁?
    # 2)self 是由谁创建的,就去该创建者中去找
    class F1:
    def f1(self):
    self.f2()
    pass

    def f2(self):
    print('我是F1中的f2')


    class F2(F1):
    def f2(self):
    print('我是F2中的f2')


    obj = F2()
    obj.f1() # 打印谁? --> 我是F2中的f2
    # 执行顺寻:根据上面说的两个原则
    # 1)obj对象是F2创建的,所以先去F2中找,没有
    # 2)obj在去F1中查找,找f1,但是f1中调用了f2
    # 问题:现在要确定f2是调用的F1类还是F2类中的f2功能?
    # 3)根据原则1:因为对象是obj,所以F1中的 self就是obj
    # ,又因为obj是由F2创建的,所以先去F2中找f2()有则打印
    # 4)上面F2中有F2所以就打印出来了

    注释:下面这个执行的顺序非常重要,需要弄清楚,不是看源码基本GG
    继承的执行顺序:
    记住两个原则:
    1)self 到底是谁?
    2)self 是由谁创建的,就去该创建者中去找


  • 相关阅读:
    转载阿里开源的分布式事务框架 Seata
    查看进程上的线程数量
    chmod命令
    查找端口与查找正在运行的进程
    可输入的文本框
    js 类和对象
    js 三维数组
    ajax
    ORACLE数据库主要的系统表和数据字典视图
    url 传参
  • 原文地址:https://www.cnblogs.com/haibaiwuchang/p/13401636.html
Copyright © 2011-2022 走看看