En fait, si y’a un truc que je conseille en Python (notamment aux devs juniors de mon équipe au boulot), a fortiori aux gens qui connaissent déjà un langage OO classique comme C++, C# ou Java, c’est de s’interdire de penser avec des classes.
Il vaut mieux un code 100% utile avec des fonctions et les conteneurs standards (dictionnaires, listes, set, tuples…) que de créer des classes pour rien. La décision de créer une classe ne devrait venir que lorsque l’on a déjà un code qui fonctionne à peu près et/ou quand on a déjà une idée de comment la classe sera effectivement (et non serait éventuellement) utilisée.
La raison profonde, c’est que le paradigme OO s’exprime très différemment en Python par rapport aux langages cités plus haut, car ils ne sont pas pensés avec les mêmes priorités à l’origine : si une classe ne rend pas ton code plus court ni plus facile à comprendre, alors elle n’a aucun intérêt car elle ne le rendra ni plus rapide, ni plus facilement réutilisable.