Examen de 2017

Examen de 2017

par Mohamed Ali Ben Mansour,
Number of replies: 1

Bonsoir Monsieur, dans l'exercice 4 de l'examen de 2017, je n'arrive pas à comprendre comment définir best_friend et worst_ennemy. Pourquoi ne pas les avoir entré dans les paramètres de la méthode __init__ ? De plus, je n'arrive pas à appeler simplement "name" de best_friend et worst_ennemy, ou encore vérifier qu'ils ne sont pas vides, comment faire ?

Merci d'avance pour votre aide.

In reply to Mohamed Ali Ben Mansour

Re: Examen de 2017

par Jean-Philippe Pellet,

On pourrait les définir dans la méthode __init__, mais on aurait un problème de qui définir en premier par exemple si deux personnages sont les meilleures amis l'un de l'autre: vous devriez avoir créé le premier pour le passer en paramètre à la méthode __init__ du second, et inversement, ce qui n'est pas possible. On prend alors le parti de déjà réserver un champ qui s'appelle best_friend et worst_enemy, mais de l'initialiser à None dans la méthode __init__ — ce qui signifie l'absence de valeur. On leur donne ensuite une valeur si nécessaire en dehors de la méthode __init__ comme le montre le code de base.

Pour vérifier si un tel attribut est défini ou pas, vous pouvez faire, si p est du type de la classe en question:

if p.best_friend is not None:
    # p a un meilleur ami, dont le nom est p.best_friend.name

ou inversement:

if p.best_friend is None:
    # p n'a pas de meilleur ami défini

Meilleures salutations,

Jean-Philippe Pellet