• 类的继承


    类的继承

    什么是继承

    继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类

    继承的特性是:子类会遗传父类的属性

    继承是类与类之间的关系

    为什么用继承

    使用继承可以减少代码的冗余

    对象的继承

    Python中支持一个类同时继承多个父类

    class Parent1:
        pass
    
    
    class Parent2:
        pass
    
    
    class Sub1(Parent1, Parent2):
        pass
    

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

    类的派生

    派生:子类中新定义的属性的这个过程叫做派生,并且需要记住子类在使用派生的属性时始终以自己的为准

    父类中没有的属性 子类中出现 叫派生属性

    父类中没有的方法 子类中出现 叫派生方法

    父类和子类都有 调用子类的 想调父类的要指出父类名称调用

    class Person:
        def __init__(self,name, sex, tel):
            self.name = name
            self.sex = sex
            self.tel = tel
    
    class Man(Person):
        def __init__(self, name, sex, tel, high):
            #Person.__init__(self, name, sex, tel) #  调用父类变量
            super().__init__(name, sex, tel)  # 可以用super方法代替上面的方法  可以省略父类名和self
            self.hight = high      # 派生属性
    class Woman(Person): pass
    

    类的组合

    组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象

    当类与类之间没有直接逻辑关系,但是需要将他们联合起来,就可以用组合

    类的分类

    新式类

    继承了object的类以及该类的子类,都是新式类

    Python3中所有的类都是新式类

    经典类

    没有继承object的类以及该类的子类,都是经典类

    只有Python2中才有经典类

    菱形继承问题

    如果继承关系为菱形结构,即子类的父类最后继承了同一个类,那么属性的查找方式有两种:

    • 经典类下:深度优先
    • 新式类下:广度优先
    • 经典类:一条路走到黑,深度优先

    mro()方法

    用来查看类的继承顺序

    print(A.mro()) 
    

    遵循如下三条准则:

    子类会先于父类被检查

    多个父类会根据它们在列表中的顺序被检查

    如果对下一个类存在两个合法的选择,选择第一个父类

    类的多态与多态性

    多态

    多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)

    多态性

    多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。

    多态性的好处

    增加了程序的灵活性:以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)

    增加了程序额可扩展性:通过继承Animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用

  • 相关阅读:
    C# 通过反射初探ORM框架的实现原理
    Redis-Nosql数据库入门
    HTTPS 建立连接的详细过程
    Spring面试题
    struts2面试整理
    Java面试基本知识
    Spring MVC面试整理
    Mybatis面试整理
    Sublime 正则替换
    Hiberante知识点梳理
  • 原文地址:https://www.cnblogs.com/einsam/p/11157585.html
Copyright © 2020-2023  润新知