Cómo escribir métodos con el mismo nombre con diferentes parámetros en python [duplicado]
Esta pregunta ya tiene una respuesta aquí:
¿Cómo funciona el polimorfismo en Python? 3 respuestasPython función de sobrecarga 13 respuestasEstoy aprendiendo Python (3.x) de un fondo Java.
Tengo un programa de Python donde creo un personObject y lo agrego a una lista.
p = Person("John")
list.addPerson(p)
Pero por flexibilidad, también quiero poder declararlo directamente en el método addPerson, así:
list.addPerson("John")
El método addPerson podrá diferenciar si envío o no un Person-object o un String.
En Java crearía dos métodos separados, como este:
void addPerson(Person p) {
//Add person to list
}
void addPerson(String personName) {
//Create Person object
//Add person to list
}
No puedo averiguar cómo hacer esto en Python. Sé de una función type (), que podría usar para verificar si el parámetro es una Cadena o un Objeto. Sin embargo, eso me parece desordenado. ¿Hay otra forma de hacerlo?
EDITAR
Supongo que la solución alternativa sería algo como esto (python):
def addPerson(self, person):
//check if person is string
//Create person object
//Check that person is a Person instance
//Do nothing
//Add person to list
Pero parece desordenado en comparación con la solución de sobrecarga en Java.