operationsunless they are redefined in the proxy clients that do not use operator overloading are fully supportedbut others may require additional code in importantlythis is not new-style class issue hereit' python version issue--the same code runs differently and fails in only because the nature of the wrapped object' class is irrelevant to the proxywe are concerned only with the proxy' own codewhich works under but not we've met this issue few times already in this bookbut let' take quick look at its impact on the very realistic code we've written hereand explore workaround to it caveatimplicitly run operator overloading methods fail to delegate under like all delegation-based classes that use __getattr__this decorator works cross-version for normally named or explicitly called attributes only when run implicitly by built-in operationsoperator overloading methods like __str__ and __add__ work differently for new-style classes because this code is interpreted as new-style class in onlysuch operations fail to reach an embedded object that defines them when run under this python line as currently coded as we learned in the prior built-in operations look for operator overloading names in instances for classic classesbut not for new-style classes--for the latterthey skip the instance entirely and begin the search for such methods in classes (technicallyin the namespace dictionaries of all classes in the instance' treehencethe __x__ operator overloading methods implicitly run for built-in operations do not trigger either __getattr__ or __getattribute__ in new-style classesbecause such attribute fetches skip our oninstance class' __getattr__ altogetherthey cannot be validated or delegated our decorator' class is not coded as explicitly new-style (by deriving from object)so it will catch operator overloading methods if run under as default classic class in xthoughbecause all classes are new-style automatically (and by mandate)such methods will fail if they are implemented by the embedded object--because they are not caught by the proxythey won' be passed on the most direct workaround in is to redefine redundantly in oninstance all the operator overloading methods that can possibly be used in wrapped objects such extra methods can be added by handby tools that partly automate the task ( with class decorators or the metaclasses discussed in the next or by definition in reusable superclasses though tedious--and code-intensive enough to largely omit here--we'll explore approaches to satisfying this -only requirement in moment firstthoughto see the difference for yourselftry applying the decorator to class that uses operator overloading methods under xvalidations work as beforeand both the __str__ method used by printing and the __add__ method run for invoke the decorators