workarounds)and to be special-case factor in nearly formal inheritance definition in in language like python that supports both attribute interception and operator overloadingthe impacts of this change can be as broad as this spread impliesstep using introspection tools let' make one final tweak before we throw our objects onto database as they areour classes are complete and demonstrate most of the basics of oop in python they still have two remaining issues we probably should iron outthoughbefore we go live with themfirstif you look at the display of the objects as they are right nowyou'll notice that when you print tom the managerthe display labels him as person that' not technically incorrectsince manager is kind of customized and specialized per son stillit would be more accurate to display an object with the most specific (that islowestclass possiblethe one an object is made from secondand perhaps more importantlythe current display format shows only the attributes we include in our __repr__and that might not account for future goals for examplewe can' yet verify that tom' job name has been set to mgr correctly by manager' constructorbecause the __repr__ we coded for person does not print this field worseif we ever expand or otherwise change the set of attributes assigned to our objects in __init__we'll have to remember to also update __repr__ for new names to be displayedor it will become out of sync over time the last point means thatyet againwe've made potential extra work for ourselves in the future by introducing redundancy in our code because any disparity in __repr__ will be reflected in the program' outputthis redundancy may be more obvious than the other forms we addressed earlierstillavoiding extra work in the future is generally good thing special class attributes we can address both issues with python' introspection tools--special attributes and functions that give us access to some of the internals of objectsimplementations these tools are somewhat advanced and generally used more by people writing tools for other programmers to use than by programmers developing applications even soa basic knowledge of some of these tools is useful because they allow us to write code that processes classes in generic ways in our codefor examplethere are two hooks that can help us outboth of which were introduced near the end of the preceding and used in earlier examplesthe built-in instance __class__ attribute provides link from an instance to the class from which it was created classes in turn have __name__just like modules more realistic example