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