to the instance being processed--the subject of the call in factbecause all the objects in class trees are just namespace objectswe can fetch or set any of their attributes by going through the appropriate names saying setname is as valid as saying setnameas long as the names and are in your code' scopes operator overloading as currently codedour class doesn' attach name attribute to an instance until the setname method is called indeedreferencing name before calling setname would produce an undefined name error if class wants to guarantee that an attribute like name is always set in its instancesit more typically will fill out the attribute at construction timelike thisclass class make superclass objects class ( )def __init__(selfwho)self name who set name when constructed self is either or ('bob' ('sue'print( namesets name to 'bobsets name to 'sueprints 'bobif it' coded or inheritedpython automatically calls method named __init__ each time an instance is generated from class the new instance is passed in to the self argument of __init__ as usualand any values listed in parentheses in the class call go to arguments two and beyond the effect here is to initialize instances when they are madewithout requiring extra method calls the __init__ method is known as the constructor because of when it is run it' the most commonly used representative of larger class of methods called operator overloading methodswhich we'll discuss in more detail in the that follow such methods are inherited in class trees as usual and have double underscores at the start and end of their names to make them distinct python runs them automatically when instances that support them appear in the corresponding operationsand they are mostly an alternative to using simple method calls they're also optionalif omittedthe operations are not supported if no __init__ is presentclass calls return an empty instancewithout initializing it for exampleto implement set intersectiona class might either provide method named intersector overload the expression operator to dispatch to the required logic by coding method named __and__ because the operator scheme makes instances look and feel more like built-in typesit allows some classes to provide consistent and natural interfaceand be compatible with code that expects built-in type stillapart from the __init__ constructor--which appears in most realistic classes--many prooop from , feet