Studying polymorphism in python. I'm trying to overload the sort method of the class list that was inherited by my class group. It turns out that the planning is not working out right. I do not think the problem is the sort algorithm. It has to sort by increasing age, but the exit after sort looks like this:
Nome: Ana || Idade: 13
Nome: Ana || Idade: 13
Nome: Maria || Idade: 45
Code:
class Grupo(list):
def __init__(self):
self.pessoas=Pessoa()
def __str__(self): #sobrecarga do método print. Irá printar os dados de todas as pessoas do grupo
str=""
for pessoa in self.pessoas: #percorre a lista e vai adicionando os dados das pessoas há uma string única
str+="\nNome: %s || Idade: %d"%(pessoa.nome,pessoa.idade)
return str #retorna a string
def sort(self):
copia = self.pessoas.copy()
tamanho = len(self.pessoas)
self.pessoas.clear()
while len(self.pessoas) < tamanho:
min=copia[0]
for pessoa in copia:
if pessoa.idade < min.idade:
min = pessoa
copia.remove(min)
self.pessoas.append(min)
class Pessoa:
def __init__(self, nome=None, idade=None):
self.nome = nome
self.idade = idade
pedro = Pessoa("Pedro", 23)
ana = Pessoa("Ana", 13)
maria = Pessoa("Maria", 45)
grupo = Grupo()
grupo.pessoas = [pedro, ana, maria]
print(grupo)
grupo.sort()
print(grupo)