The single responsibility principle
The single responsibility principle (SRP) states that a software component (in general, a class) must have only one responsibility. The fact that the class has a sole responsibility means that it is in charge of doing just one concrete thing, and as a consequence of that, we can conclude that it must have only one reason to change.
Only if one thing on the domain problem changes will the class have to be updated. If we have to make modifications to a class for different reasons, it means the abstraction is incorrect, and that the class has too many responsibilities. This is probably an indication that there is at least one abstraction missing: more objects need to be created to address the extra responsibility that's overloading the current class in question.
As introduced in Chapter 2, Pythonic Code, this design principle helps us build more cohesive abstractions—objects that do one thing, and just one thing, well, following...