參考了這篇博客打了一遍:Python - 對多繼承以及super的一些瞭解
class D(object):
def foo(self):
print "class D"
class B(D):
pass
class C(D):
def foo(self):
print "class C"
class A(B, C):
pass
f = A()
f.foo()
====
output: class C
如果把 class D(object) 改成 class D:
class D:
def foo(self):
print "class D"
class B(D):
pass
class C(D):
def foo(self):
print "class C"
class A(B, C):
pass
f = A()
f.foo()
=====
output: class D
補充了下多繼承的情況:
class B:
def foo(self):
print "class b"
class C:
def foo(self):
print "class C"
class A(B, C):
pass
f = A()
f.foo()
=============
output: class b
===========================
class A(object):
def __init__(self,a):
print a
class B(object):
def __init__(self,a,b):
print a+b
class C(A,B):
def __init__(self):
super(C,self).__init__(?)
obj = C()
① ? = 1 --> 輸出1
② ? = 1,2 --> TypeError: __init__() takes exactly 2 arguments (3 given)
定義C的時候改成class(B,A)
③ ? = 1 --> TypeError: __init__() takes exactly 3 arguments (2 given)
④ ? =1,2 --> 輸出3
class A(object):
def func(self):
print 1
class B(object):
def __init__(self):
print 2
class C(A,B):
def __init__(self):
super(C,self).__init__()
obj = C()
#The output is 2