as attributesthe main difference between them is that classes are kind of factory for creating multiple instances classes also support operator overloading methodswhich instances inheritand treat any functions nested in the class as methods for processing instances the first argument in class' method function is special because it always receives the instance object that is the implied subject of the method call it' usually called self by convention because method functions always have this implied subject and object context by defaultwe say they are "object-oriented( designed to process or change objects if the __init__ method is coded or inherited in classpython calls it automatically each time an instance of that class is created it' known as the constructor methodit is passed the new instance implicitlyas well as any arguments passed explicitly to the class name it' also the most commonly used operator overloading method if no __init__ method is presentinstances simply begin life as empty namespaces you create class instance by calling the class name as though it were functionany arguments passed into the class name show up as arguments two and beyond in the __init__ constructor method the new instance remembers the class it was created from for inheritance purposes you create class by running class statementlike function definitionsthese statements normally run when the enclosing module file is imported (more on this in the next you specify class' superclasses by listing them in parentheses in the class statementafter the new class' name the left-to-right order in which the classes are listed in the parentheses gives the left-to-right inheritance search order in the class tree oopthe big picture