1.继承
class ChineseGoGame(GoGame):
nation = 'cn'
class KoreaGoGame(GoGame):
nation = 'kr'
[<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>]
class A:
def __init__(self):
print("int A")
class B:
def __init__(self):
print("int B")
class C(A, B):
pass
print(C.mro())
[<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>]
>指定方法的调用顺序
class C(A, B):
def __init__(self):
super(A, self).__init__()
指定A的上一个,所以输出 int B.
>super函数源码
def super(cls, inst):
mor = inst.__class__.mro()
return mor[mor.index(cls)+1]
def super(类, 实例):
#获取当前实例的方法解析顺序
mor = 实例.类.mro()
return mor[mro.iindex(类) + 1]
2.多态
分为覆盖和重载
>覆盖
class A:
def __init__(self):
print("int A")
class B:
def __init__(self):
print("int B")
class C(A, B):
def __init__(self):
print("int C")