关于带参数的super()调用
class Metaclass (type):
def donew(cls):
print("+++ Metaclass: in donew--")
class MetaParams(Metaclass):
def __new__(cls, *args, **kwargs):
return type.__new__(cls,*args)
class Cerebro (object,metaclass= MetaParams):
pass
if __name__ == '__main__':
cerebro = Cerebro()
print("Mro: ",Cerebro.__mro__)
super(MetaParams, Cerebro).donew()
类Cerebro的MRO为:<class ‘main.Cerebro’>, <class ‘object’>
super(MetaParams, Cerebro):意思是按照Cerebro的MRO顺序寻找MetaParams的下一个,并返回,但是MRO中没有MetaParams,那么这个super返回的是哪个类。
试验表明super返回的是Metaclass这个类,但是为什么?
推荐文章: