super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。
普通继承
复制代码 代码如下:
class FooParent(object):
def __init__(self):
self.parent = ‘I\’m the parent.’
1、多继承
Python中的多继承跟java中的多继承不一样。Python中多继承可以继承多个基类。个人看法:Java多继承类似传统的繁殖模式(单个基类),Python符合现代的繁殖模式(基因工程,存在多个基类)。
示例:
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
class A:
def test(self):
print(
什么是MRO
Method Resolution Order , 定义了Python中多继承存在的情况下,解释器查找函数解析的具体顺序
什么是函数解析顺序
# 经典继承问题 - 棱形继承
class A:
def who_am_i(self):
print("i am A")
class B:
pass
class C:
def who_am_i(self):
print("i am A")
class D(B, C):
pass