2015-02-06 155 views
-1

我很困惑python中的概念 - 基类覆盖。我了解到,在不同的类中可以有两个具有相同名称的不同函数,并且根据对象来自哪个类,将在对象上调用正确的函数。 但是,我刚刚了解到超级电话,并且我知道如果您取消(纠正过去时态?),则可以使用该功能。我很困惑,因为重写的函数并没有消失,是吗?为什么我需要使用超级通话“恢复”它?Python类覆盖

+2

此链接可能有助于理解Python中的方法解析顺序。 http://python-history.blogspot.com/2010/06/method-resolution-order.html – ozgur 2015-02-06 01:11:00

回答

1

孩子的类型是第一个MRO,所以即使其父母有相同的方法,它的方法也会被调用。 super在继承链中的下一个链接处“重新启动”MRO,并允许发现属于父类的属性。

+0

我不确定MRO是什么,但我知道你在说什么。思考一下后,我想我有一个答案(像我这样的编程新手获得),谁知道这个更好告诉我,如果这是正确的? 派生类中的对象只能使用派生类中的重写函数。 ** super **允许对象从基类访问原始函数。 – 2015-02-06 01:21:49

+0

MRO是我回答中描述的链接。 – 2015-02-06 01:22:20

+0

我知道,但我很难理解它,因为唯一暴露于python的是codeacademy。 – 2015-02-06 01:25:03