Python——spuer()

来源:互联网 发布:wish数据分析 编辑:程序博客网 时间:2024/06/02 20:02
class Base():    def __init__(self):        print('Base',self)class A(Base):      def __init__(self):        print('start A',self)        super(A,self).__init__()        print('end A',self)class B(Base):      def __init__(self):        print('start B',self)        super(B,self).__init__()        print('end B',self)class C(A,B):    def __init__(self):        print('start C',self)        super(C,self).__init__()        print('end C',self)c=C()print(c.__class__.mro())

结果

start C <__main__.C object at 0x02B01770>start A <__main__.C object at 0x02B01770>start B <__main__.C object at 0x02B01770>Base <__main__.C object at 0x02B01770>end B <__main__.C object at 0x02B01770>end A <__main__.C object at 0x02B01770>end C <__main__.C object at 0x02B01770>[<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.Base'>, <class 'object'>]

spuer原理为

def spuer(cls,inst):    mro=inst.__class__.mro()    return mro[mro.index(cls)+1]

获取inst的mro列表,返回mro表中cls的下一个类
上述例子中,self始终为C的实例