instead of inheritance what would you have to change if the objects coded in this used dictionary for names and list for jobsas in similar examples earlier in this book how might you modify the classes in this to implement personal contacts database in pythontest your knowledgeanswers in the final version of our classesmanager ultimately inherits its __repr__ printing method from attrdisplay in the separate classtools module and two levels up in the class tree manager doesn' have one itselfso the inheritance search climbs to its person superclassbecause there is no __repr__ there eitherthe search climbs higher and finds it in attrdisplay the class names listed in parentheses in class statement' header line provide the links to higher superclasses shelves (reallythe pickle module they useautomatically relink an instance to the class it was created from when that instance is later loaded back into memory python reimports the class from its module internallycreates an instance with its stored attributesand sets the instance' __class__ link to point to its original class this wayloaded instances automatically obtain all their original methods (like lastnamegiveraiseand __repr__)even if we have not imported the instance' class into our scope it' important to move processing into methods so that there is only one copy to change in the futureand so that the methods can be run on any instance this is python' notion of encapsulation--wrapping up logic behind interfacesto better support future code maintenance if you don' do soyou create code redundancy that can multiply your work effort as the code evolves in the future customizing with subclasses reduces development effort in oopwe code by customizing what has already been donerather than copying or changing existing code this is the real "big ideain oop--because we can easily extend our prior work by coding new subclasseswe can leverage what we've already done this is much better than either starting from scratch each timeor introducing multiple redundant copies of code that may all have to be updated in the future copying and modifying code doubles your potential work effort in the futureregardless of the context if subclass needs to perform default actions coded in superclass methodit' much better to call back to the original through the superclass' name than to copy its code this also holds true for superclass constructors againcopying code creates redundancywhich is major issue as code evolves generic tools can avoid hardcoded solutions that must be kept in sync with the rest of the class as it evolves over time generic __repr__ print methodfor exampleneed not be updated each time new attribute is added to instances in an more realistic example