• 重用父类功能的两种方式


    # 在子派生的新方法中重用父类功能的两种方式
    # 方式一:与继承无关
    #指名道姓法,直接用:类名.函数名
    # class OldboyPeople:
    # school = 'oldboy'
    #
    # def __init__(self, name, age, sex):
    # self.name = name
    # self.age = age
    # self.sex = sex
    #
    # class OldboyStudent(OldboyPeople):
    # def __init__(self,name,age,sex,stu_id):
    # OldboyPeople.__init__(self,name,age,sex)
    # self.stu_id=stu_id
    #
    # def choose_course(self):
    # print('%s is choosing course' %self.name)


    # 方式二:严格依赖继承属性查找关系
    # super()会得到一个特殊的对象,该对象就是专门用来访问父类中的属性的(按照继承的关系)
    # super().__init__(不用为self传值)
    # 注意:
    # super的完整用法是super(自己的类名,self),在python2中需要写完整,而python3中可以简写为super()
    # class OldboyPeople:
    # school = 'oldboy'
    #
    # def __init__(self, name, age, sex):
    # self.name = name
    # self.age = age
    # self.sex = sex
    #
    # class OldboyStudent(OldboyPeople):
    # def __init__(self,name,age,sex,stu_id):
    # # OldboyPeople.__init__(self,name,age,sex)
    # super(OldboyStudent,self).__init__(name,age,sex)
    # self.stu_id=stu_id
    #
    # def choose_course(self):
    # print('%s is choosing course' %self.name)
    #
    #
    # stu1=OldboyStudent('猪哥',19,'male',1)
    # print(stu1.__dict__)
    #
    # print(OldboyStudent.mro())


    class A:
    def f1(self):
    print('A.f1')

    class B:
    def f1(self):
    print("hahaha")
    def f2(self):
    super(B,self).f1()
    print('B.f2')


    class C(B,A):
    def f1(self):
    print("wawa")

    obj=C() # 生成一个C的对象
    print(C.mro()) #C-》B->A->object
    obj.f2() # 寻找f2函数属性 先在obj找,没有到obj的类C中找,没有到父类B找(从左到右),找到了f2,
    # 执行f2,遇到super().f1(),在父类中找f1,B没有父类。此时光标在B处,按照mro列表继续往下找
    # [<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]







  • 相关阅读:
    LeetCode:2. 两数相加
    LeetCode:1. 两数之和
    property类的使用
    JAVA-数据库连接【转】
    快速将excel数据保存到Oracle数据库中【转】
    Oracle导入excel数据方法汇总[转]
    Maven 系列 一 :Maven 快速入门及简单使用【转】
    Maven 系列 二 :Maven 常用命令,手动创建第一个 Maven 项目【转】
    开源项目导入eclipse的一般步骤[转]
    JavaScript基础---作用域,匿名函数和闭包【转】
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9234367.html
Copyright © 2020-2023  润新知