class base():
def step(self):
print("this is base")
def __call__(self,m):
self.call_a()#B的实例调用B的方法
class A(base):
def __init__(self):
self.name = 'A'
self.step()
def call_a(self):
print('call A')
def __call__(self,m):
print(self)
super(A,self).__call__(m)
print('call A',m)
class B(A):
def __init__(self):
self.name = 'A'
self.step()
def call_a(self):
print('call B')
先调用A的__call__ 再调用base的__call__ 其中base中再引用B的实例调用B的方法
this is base
<__main__.B object at 0x7fcf203dbac8>
call B
call A 2