好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

继承中的MRO与super详解

Python进阶-继承中的MRO与super 写在前面

摘要
本文讲述 Python 继承关系中如何通过 super() 调用“父类”方法, super(Type, CurrentClass) 返回 CurrentClass 的 MRO 中 Type 的下一个类的代理;以及如何设计 Python 类以便正确初始化。

1. 单继承中父类方法调用

在继承中,调用父类方法是很有必要的。调用父类方法的场景有很多:

比如必须调用父类的构造方法 __init__ 才能正确初始化父类实例属性,使得子类实例对象能够继承到父类实例对象的实例属性;

再如需要重写父类方法时,有时候没有必要完全摒弃父类实现,只是在父类实现前后加一些实现,最终还是要调用父类方法

单继承是最简单的继承关系,多继承过于复杂,而且使用起来容易出错。因此一些高级语言完全摒弃了多继承,只支持单继承;一些高级语言虽然支持多继承,但也不推荐使用多继承。 Python 也是一样,在不能完全掌握多继承时,最好不好使用,单继承能满足绝大部分的需求。

1.1 非绑定方式调用

绑定方法与非绑定方法的区别与联系参见:Python基础-类

如有以下继承关系两个类:

class D(object):def test(self):print('test in D')class C(D):def test(self):print('test in C')
        D.test(self) 

查看更多关于继承中的MRO与super详解的详细内容...

  阅读:38次