Correction TP IV

class Adresse(object): def __init__(self, rue, ville, code_postal): self._rue = rue self._ville = ville self._code_postal = code_postal def __str__(self): return '<Adresse: ' + str(self._rue) + ', ' + str(self._ville) + ', ' + str(self._code_postal) + '>' # getters def rue(self): return self._rue def ville(self): return self._ville def code_postal(self): return self._code_postal class Personne(object): def __init__(self, nom, sexe, adresses): self._nom = nom self._sexe = sexe self._adresses = adresses def __str__(self): return '<Personne: ' + str(self._nom) + ', ' + str(self._sexe) + ', ' + 'nbr adresses: ' + str(len(self._adresses)) + '>' # getters def nom(self): return self._nom def sexe(self): return self._sexe def adresses(self): return self._adresses class Liste_personnes(object): def __init__(self, personnes): self._personnes = personnes def __str__(self): return '<Liste_personnes: ' + str(len(self._personnes)) + '>' def personnes(self): return self._personnes def trouver_par_nom(self, nom): for personne in self._personnes: if nom == personne.nom(): return personne return def existe_code_postal(self, code_postal): for personne in self._personnes: for adresse in personne.adresses(): if code_postal == adresse.code_postal(): return True return False def nombre_personne_ville(self, ville): nbr_personne = 0 for personne in self._personnes: for adresse in personne.adresses(): if adresse.ville() == ville: nbr_personne += 1 return nbr_personne def edit_personne_nom(self, nom, nouveau_nom): for personne in self._personnes: if personne.nom() == nom: personne._nom = nouveau_nom def edit_personne_ville(self, nom, nouvelle_adresse): for personne in self._personnes: if personne.nom() == nom: personne._adresses.append(nouvelle_adresse) def __getitem__(self, key): return self._personnes[key] def __len__(self): return len(self._personnes) def __iter__(self): return iter(self._personnes) a = Adresse('rue', 'ville', 'code_postal') # print(a) # print(a.ville()) adresses = [a, a, a, a] p = Personne('n', 's', adresses) # print(p) # print(p.nom()) p2 = Personne('n2', 's2', adresses) p3 = Personne('n3', 's3', adresses) personnes = [p, p2, p3] l = Liste_personnes(personnes) # print(l.trouver_par_nom('n4')) # print(l.existe_code_postal('loo')) # print(l.existe_code_postal('42')) # print(l.nombre_personne_ville('ville')) # print(l.nombre_personne_ville('test')) l.edit_personne_nom('n2', 'nouveau_nom') # print(l._personnes[1]._nom) l.edit_personne_ville('nouveau_nom', Adresse('newRue', 'newVille', 'newCP')) # print(l._personnes[1]._adresses[4]) # len et [] for i in range(0, len(l)): print(l[i]) # iter for i in l: print(i)