Python MRO errors: Why child classes must precede parents

Python MRO errors: Why child classes must precede parents

When you define a class, Python checks it can get an unambiguous MRO. Children must always precede parents.

class A: pass
class B(A): pass
class C(A): pass
class D(C, A, B): pass

This gives a TypeError when D is defined, because B (child of A) comes after A.