like most softwarethere' much more we could do here the following gives some pointers on extensions you may wish to explore some are interesting projectsand two serve as segue to the next but for space will have to remain in the suggested exercise category here general ideasguisbuilt-ins grouping double-underscore names as we did earlier may help reduce the size of the tree displaythough some like __init__ are user-defined and may merit special treatment sketching the tree in gui might be natural next step too--the tkinter toolkit that we utilized in the prior section' lister examples ships with python and provides basic but easy supportand others offer richer but more complex alternatives see the notes at the end of ' case study for more pointers in this department physical trees versus inheritanceusing the mro (previewin the next we'll also meet the new-style class modelwhich modifies the search order for one special multiple inheritance case (diamondstherewe'll also study the class __mro__ new-style class object attribute-- tuple giving the class tree search order used by inheritanceknown as the new-style mro as isour listtree tree lister sketches the physical shape of the inheritance treeand expects the viewer to infer from this where an attribute is inherited from this was its goalbut general object viewer might also use the mro tuple to automatically associate an attribute with the class from which it is inherited--by scanning the new-style mro (or the classic classesdflr orderingfor each inherited attribute in dir resultwe can simulate python' inheritance searchand map attributes to their source objects in the physical class tree displayed in factwe will write code that comes very close to this idea in the next mapattrs moduleand reuse this example' test classes there to demonstrate the ideaso stay tuned for an epilogue to this story this might be used instead of or in addition to displaying attribute physical locations in __attrnames hereboth forms might be useful data for programmers to see this approach is also one way to deal with slotsthe topic of the next note virtual dataslotspropertiesand more (previewbecause they scan instance __dict__ namespace dictionariesthe listinstance and listtree classes presented here raise some subtle design issues in python classessome names associated with instance data may not be stored at the instance itself this includes topics presented in the next such as new-style propertiesslotsand descriptorsbut also attributes dynamically computed in all classes with tools like __getattr__ none of these "virtualattributesnames are stored in an instance' namespace dictionaryso none will be displayed as part of an instance' own data multiple inheritance"mix-inclasses