Sobrecarga sobrecargada: por qué Python no admite la sobrecarga de métodos pero sí la de operadores
Overloaded Overloading

Python no admite la sobrecarga de métodos (definir varias versiones de un método con el mismo nombre pero diferentes parámetros), pero sí admite la sobrecarga de operadores, como se ve con '+' que funciona tanto para suma como para concatenación. Este artículo explica la diferencia entre estos dos tipos de sobrecarga, muestra cómo implementar la sobrecarga de operadores definiendo métodos mágicos como __add__, y ofrece dos técnicas para simular la sobrecarga de métodos cuando sea necesario: despacho manual con isinstance() o el decorador @singledispatch de functools.
La respuesta es que, aunque Python no admite la sobrecarga de métodos... sí admite la sobrecarga de operadores.