py 继承

语法

py 支持多继承.

class A:  # 定义父类
    def __init__(self, a=None):
        pass
    def myMethod(self):
        print('调用父类方法')

class B:  # 定义父类
    def __init__(self, b=None):
        pass

class C(A, B):  # 定义子类
    def myMethod(self):
        print
        '调用子类方法'
    def __init__(self, a, b):
        # 调用A类的构造函数
        super(C, self).__init__(a=a)
        # 调用B类的构造函数
        super(A, self).__init__(b=b)

c = C(1,2)  # 子类实例
c.myMethod()  # 子类调用重写方法

重写

子类中的方法会覆盖父类中的同名方法.

MRO

Method Resolution Order, 方法判定顺序. 多个父类间存在同名的函数时, 子类如何继承? 由MRO 机制决定.
简单描述, 先是子类自己(对应方法重写的情况),然后继承列表从左到右, 越靠前的优先级越高, 如 class C(A,B) 这一定义, 子类继承的将是A的方法, B的同名方法不可用.

super

super是一个py内置类而不是关键字. super()super(type, obj)的简写,在调用super()时,type参数传入的是当前的类,obj参数传入的是当前的实例对象.
它返回的是一个代理类, 是obj所属类的MRO中,排在type之后的下一个父类。也可以这么说, 它返回的是type类的父类或兄弟类. 是有点别扭, 详见参考[1].
典型使用场景为多继承中的构造函数调用, 见文章开始的示例代码.

相关内置函数

  • issubclass(A,B),返回bool值.

参考

  1. cnblog,python中的super()用法以及多继承协同任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值