新式类中的多继承需要注意的

以下只针对新式类,旧式类则无下列限制

多继承不可重复继承(或者说既当孙子又当儿子或者从孙子等等)

class A:

    pass

class B(A):

    pass

class C(A,B):

    pass

test=C() #重复继承  ,c继承了A表明他是a的儿子,但又继承了b表明他是a的孙子,那他到底是孙子还是儿子?(但是此处如果改为C(B,A)则不报错,也就是说继承顺序中排在后面的辈分一定不小于排在前面的,不过这样的话多此一举,只是不报错而已)

第二个错误是,在新式类中,继承顺序前后矛盾

class a(object):

    pass

class b(object):

    pass

class c(a,b):

    pass

class d(b,a):

    pass

class e(c,d):

    pass

#前面c已经声明了继承顺序是a,b,后面d却违背了前面拟定的继承顺序。因为新式类中是以广度优先(c3算法)的原则确定实例属性,所以不仅要理清祖先谱中的辈分关系,还要理清同辈之间的前后次序,不能一会儿在前一会儿再后

原文地址:https://www.cnblogs.com/saolv/p/8961269.html