explicit operator overloading is coded in python class with specially named methodsthey all begin and end with double underscores to make them unique these are not built-in or reserved namespython just runs them automatically when an instance appears in the corresponding operation python itself defines the mappings from operations to special method names operator overloading is useful to implement objects that resemble built-in types ( sequences or numeric objects such as matrixes)and to mimic the built-in type interface expected by piece of code mimicking built-in type interfaces enables you to pass in class instances that also have state information ( attributes that remember data between operation callsyou shouldn' use operator overloading when simple named method will sufficethough the __init__ constructor method is the most commonly usedalmost every class uses this method to set initial values for instance attributes and perform other startup tasks the special self argument in method functions and the __init__ constructor method are the two cornerstones of oop code in pythonif you get theseyou should be able to read the text of most oop python code--apart from theseit' largely just packages of functions the inheritance search matters tooof coursebut self represents the automatic object argumentand __init__ is widespread class coding basics