once when it is accessible from multiple subclasses it' arguably better than dflrbut applies to small subset of python user codeas we'll seethoughthe new-style class model itself makes diamonds much more commonand the mro more important at the same timethe new mro will locate attributes differentlycreating potential incompatibility for classic classes let' move on to some code to see how its differences pan out in practice implications for diamond inheritance trees to illustrate how the new-style mro search differsconsider this simplistic incarnation of the diamond multiple inheritance pattern for classic classes hered' superclasses and both lead to the same common ancestoraclass aattr class ( )pass class ( )attr class (bc)pass ( attr classic (python xb and both lead to tries before searches xdba the attribute attr here is found in superclass abecause with classic classesthe inheritance search climbs as high as it can before backing up and moving right the full dflr search order would visit xdbacand then for this attributethe search stops as soon as attr is found in aabove howeverwith new-style classes derived from built-in like object (and all classes in )the search order is differentpython looks in to the right of bbefore trying above the full mro search order would visit xdbcand then for this attributethe search stops as soon as attr is found in cclass (object)attr class ( )pass class ( )attr class (bc)pass ( attr new-style ("objectnot required in xtries before searches xdbc this change in the inheritance search procedure is based upon the assumption that if you mix in lower in the treeyou probably intend to grab its attributes in preference to ' it also assumes that is always intended to override ' attributes in all contextswhich is probably true when it' used standalone but may not be when it' mixed into diamond with classic classes--you might not even know that may be mixed in like this when you code it advanced class topics