• day21-1 类的继承


    类的继承

    什么是继承

    • 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类可以称为基类或超类,新建的类称为派生类或子类
    • 继承的特性是:子类会遗传父类的属性
    • 继承是类与类之间的关系

    为什么用继承

    • 子类会"遗传"父类的属性,从而使用继承可以减少代码冗余

    对象的继承

    • python中支持继承一个或多个父类
    class Parent1:
        pass
    
    class Parent2:
        pass
    
    class Son1(Parent1):  # 单继承
        pass
    
    class Son2(Parent1, Parent2):  # 多继承
        pass
    
    • 使用__bases__方法可以获取对象继承的类
    print(Son2.__bases__)
    print(Parent1.__bases__)  
    
    (<class '__main__.Parent1'>, <class '__main__.Parent2'>)
    (<class 'object'>,)
    

    新式类与经典类

    • 只有在python2中才分新式类和经典类,python3中统一都是新式类
    • 在python2中,声明继承object类的类,以及该类的子类,都是新式类;没有声明继承object类的类都是经典类
    • 在python3中,无论是否继承object,都默认继承object,即python3中所有类均为新式类

    继承与抽象

    继承描述的是子类与父类之间的关系,要找出这种关系,必须先抽象再继承,抽象即抽取类似或者说比较像的部分。

    抽象分为两个层次:

    1.将对象比较像的部分抽取成类
    2.将类比较像的部分抽取成父类
    

    继承:基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构

    继承的应用

    • 拿选课系统举例
    class People:
        def __init__(self, name, age, gender):
            self.name = name
            self.gender = gender
            self.age = age
    
    
    class Student(People):
        def choose_course(self):
            print(f'{self.name} 选课')
    
    
    class Teacher(People):
        def teach_course(self):
            print(f'{self.name} 授课')
    
    
    stud = Student('tank', 18, 'male')
    tea = Teacher('nick', 40, 'male')
    
    stud.choose_course()
    tea.teach_course()
    
    tank 选课
    nick 授课
    

    对象属性查找顺序

    class People:
        def __init__(self, name, age, gender):
            self.name = name
            self.gender = gender
            self.age = age
        
        def choose_course(self):
            print('from People')
    
    
    class Student(People):
        def choose_course(self):
            print('from Student')
    
    stud = Student('tank', 18, 'male')
    stud.choose_course()
    
    from Student
    
    class People:
        def __init__(self, name, age, gender):
            self.name = name
            self.gender = gender
            self.age = age
        
        def choose_course(self):
            print('from People')
            
    class Student(People):
        pass
    
    stud = Student('tank', 18, 'male')
    stud.choose_course()
    
    from People
    

    对象查找属性的顺序:对象自己--->对象的类--->父类--->父类。。。

  • 相关阅读:
    mysql常用方法案例
    springboot整合mybatis
    mysql自定义函数统计订单状态:GET_ORDER_STATUS()
    mysql计算时间差-本例为计算分钟差然后/60计算小时保留一位小数,由于直接得小时只会取整
    mysql字段值为null时排序问题
    对象与内存(一)
    java基础提升(关于数组)
    项目的部署
    myeclipse中ssm的搭建
    ui自动化笔记 selenium_webdriver,ui自动化框架(web)
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11051539.html
Copyright © 2020-2023  润新知