提前总结:
在类的继承中:返回绑定父类方法的途径-super
子类的方法与父类冲突,又想调用父类方法时,需要使用super()函数
基本示例:不调用时,默认为父类方法的重写
class A:
def do(self):
print("A do")
class B(A):
def do(self):
super().do()
print("B do")
b=B()
b.do()
>>> "A do"
>>> "B do"
__init__特殊情况:不显示调用super(),父类__init__并不会调用
class A:
def __init__(self,n):
self.n=n
print("A has",self.n)
class B(A):
def __init__(self,n,m):
super().__init__(n)
self.m=m
print("B has",m)
b=B(1,2)
>>> "A has 1"
>>> "B has 2"
多继承|钻石继承 特殊情况:
class C(B,A,...):
pass
从左向右,若B有基类优先基类执行,若继承自同一基类,相同方法只调用一次
一个用途:扩展list类,创建有名列表
class MyList(list):
def __init__(self, a, title=''):
super().__init__(a)
self.title = title
def infos(self):
print("列表是:", self)
print('列表名是:', self.title)