Como escrever métodos de mesmo nome com parâmetros diferentes em python [duplicado]
Esta pergunta já tem uma resposta aqui:
Como o polimorfismo funciona em Python? 3 respostasobrecarga da função Python 3 respostasEstou aprendendo Python (3.x) com experiência em Jav
Tenho um programa python em que crio um personObject e o adiciono a uma list
p = Person("John")
list.addPerson(p)
Mas por flexibilidade, também quero poder declará-lo diretamente no método addPerson, assim:
list.addPerson("John")
O método addPerson poderá diferenciar se estou enviando ou não um objeto-pessoa ou uma strin
Em Java, eu criaria dois métodos separados, como este:
void addPerson(Person p) {
//Add person to list
}
void addPerson(String personName) {
//Create Person object
//Add person to list
}
Não consigo descobrir como fazer isso em Python. Eu sei de uma função type (), que eu poderia usar para verificar se o parâmetro é ou não uma String ou um Objeto. No entanto, isso me parece confuso. Existe outra maneira de fazer isso?
EDITAR
Acho que a solução alternativa seria algo parecido com isto (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
as parece confuso comparado à solução de sobrecarga em Jav