classes also support the oop notion of inheritancewe can extend class by redefining its attributes outside the class itself in new software components coded as subclasses more generallyclasses can build up namespace hierarchieswhich define names to be used by objects created from classes in the hierarchy this supports multiple customizable behaviors more directly than other tools operator overloading by providing special protocol methodsclasses can define objects that respond to the sorts of operations we saw at work on built-in types for instanceobjects made with classes can be slicedconcatenatedindexedand so on python provides hooks that classes can use to intercept and implement any built-in type operation at its basethe mechanism of oop in python is largely just two bits of magica special first argument in functions (to receive the subject of calland inheritance attribute search (to support programming by customizationother than thisthe model is largely just functions that ultimately process built-in types while not radically newthoughoop adds an extra layer of structure that supports better programming than flat procedural models along with the functional tools we met earlierit represents major abstraction step above computer hardware that helps us build more sophisticated programs oop from , feet before we see what this all means in terms of codei' like to say few words about the general ideas behind oop if you've never done anything object-oriented in your life before nowsome of the terminology in this may seem bit perplexing on the first pass moreoverthe motivation for these terms may be elusive until you've had chance to study the ways that programmers apply them in larger systems oop is as much an experience as technology attribute inheritance search the good news is that oop is much simpler to understand and use in python than in other languagessuch as +or java as dynamically typed scripting languagepython removes much of the syntactic clutter and complexity that clouds oop in other tools in factmuch of the oop story in python boils down to this expressionobject attribute we've been using this expression throughout the book to access module attributescall methods of objectsand so on when we say this to an object that is derived from class statementhoweverthe expression kicks off search in python--it searches tree of linked objectslooking for the first appearance of attribute that it can find when classes are involvedthe preceding python expression effectively translates to the following in natural languageoop from , feet