What are classes? When should we use them?
Classes represent a way in which we can create complex objects, with the corresponding data (attributes) and functions (methods). Classes are a useful concept to represent any entity, such as a database connection, file object, algorithm, and so on. There's also a set of special methods and variables that's used by Python to change the behavior of certain instances.
Can we compare two instances of a class or use arithmetic operations with them?
Yes—this is one of the use cases for special methods. For example, in order for us to check instances for equality, we need to set the __eq__ method of the class. Here, we are checking whether the instance is greater, smaller, and so on—there is a corresponding special method for each operation.
When should we use inheritance?
Inheritance is an important property...