Introduction
Magic methods let you change how your objects behave with built-in Python actions. They make your objects work like normal Python types.
When you want your object to add two instances using +
When you want to print your object nicely with print()
When you want to compare two objects with == or <
When you want your object to work with len() to get its size
When you want to customize what happens when your object is created or deleted