Python札记34_继承(待更新)

作者: 皮皮大 | 来源:发表于2019-07-07 00:26 被阅读0次

    面向对象编程OOP有以下三个特征,本篇札记中主要讨论继承的知识点:

    • 继承
    • 多态
    • 封装

    继承

    概念

    继承是面向对象设计中一个重要的概念。如果一个类A继承自另一个类B,则称B是A的父类或者超类,或者A是B的子类

    继承可以使得子类具有父类的属性和方法,不再需要重新编写方法。同时,子类还可以重新定义自己的属性和方法,或者重新写某些方法,即覆盖掉父类的属性和方法,继承的特点:

    • Python中所有的类都是object的子类,即所有的类都继承自object
    • 子类继承父类的所有方法和属性
    • 实现代码重用,子类还可以定义自身特有的属性和方法
    • 继承最主要的功能是实现多态,多态的重要性是实现接口的继承性

    Python中由于存在Duck Type,接口定义的重要性被降低了,继承的作用也被大大降低。

    单继承

    单继承就是指只从一个父类那里继承,即只有一个父类。通过一个简单的例子来了解继承:

    class A:
        pass
    
    class B(A):   # B继承自A
        pass
    B.__base__   # 类的特殊属性__base__:查看一个类的父类
    
    image.png
    • A是父类,B是子类
    • 所有的类都是object的子类,object类不必写出来;如果继承别的类,则必须写出来
    • __ base__属性查看某个类的父类

    通过一个例子来真正了解下继承:

    import random   # 导入随机模块
    
    class A:    # 定义一个A类
        def __init__(self, number):   # 初始化函数,传入参数number
            num = random.randint(1, 101)  # 在1到101之间生成一个随机数
            if num > number:    # 判断传入参数和随机数的大小
                print("{} is bigger than number".format(num))
            else:
                print("{} is smaller than number".format(num))
    
    class B(A):   # B继承自A
        pass
    
    res = B(50)   # 因为B继承了A类,A类需要传入参数,此处直接给B类传入了参数50
    
    image.png image.png
    • 例子中父类A中增加了初始化函数__init__()
    • 建立实例的时候执行初始化函数
    • B继承了A,也就拿到了初始化函数
    • 当建立res = B(50)实例的时候,执行了父类的初始化函数,就是继承

    相关文章

      网友评论

        本文标题:Python札记34_继承(待更新)

        本文链接:https://www.haomeiwen.com/subject/dblvhctx.html