in sumby defaultthe diamond pattern is searched differently for classic and new-style classesand this is non-backward-compatible change keep in mindthoughthat this change primarily affects diamond pattern cases of multiple inheritancenew-style class inheritance works the same for most other inheritance tree structures furtherit' not impossible that this entire issue may be of more theoretical than practical importance --because the new-style search wasn' significant enough to address until python and didn' become standard until it seems unlikely to impact most python code having said thati should also note that even though you might not code diamond patterns in classes you write yourselfbecause the implied object superclass is above every root class in as we saw earlierevery case of multiple inheritance exhibits the diamond pattern today that isin new-style classesobject automatically plays the role that the class does in the example we just considered hence the new-style mro search rule not only modifies logical semanticsbut is also an important performance optimization--it avoids visiting and searching the same class more than onceeven the automatic object just as importantwe've also seen that the implied object superclass in the new-style model provides default methods for variety of built-in operationsincluding the __str__ and __repr__ display format methods run dir(objectto see which methods are provided without the new-style mro search orderin multiple inheritance cases the defaults in object would always override redefinitions in user-coded classesunless they were always made in the leftmost superclass in other wordsthe new-style class model itself makes using the new-style search order more criticalfor more visual example of the implied object superclass in xand other examples of diamond patterns created by itsee the listtree class' output in the lister py example in the preceding as well as the classtree py tree walker example in -and the next section more on the mromethod resolution order to trace how new-style inheritance works by defaultwe can also use the new class __mro__ attribute mentioned in the preceding class lister examples-technically new-style extensionbut useful here to explore change this attribute returns class' mro--the order in which inheritance searches classes in new-style class tree this mro is based on the superclass linearization algorithm initially developed in the dylan programming languagebut later adopted by other languages including python and perl the mro algorithm this book avoids full description of the mro algorithm deliberatelybecause many python programmers don' need to care (this only impacts diamondswhich are relanew-style class changes