Je pense que ton professeur veut t'initier aux méthodes "magiques" des classes Python : http://sametmax.com/le-guide-ultime-et-definitif-sur-la-programmation-orientee-objet-en-python-a-lusage-des-debutants-qui-sont-rassures-par-les-textes-detailles-qui-prennent-le-temps-de-tout-expliquer-partie-6/
En gros, ce sont des méthodes avec un nom spécial (il y en a quelques dizaines) qui sont appelées par les autres fonctions ou opérateurs de Python.
Ces méthodes que tu peux déclarer à l'intérieur de ta classe permettent de définir le résultat lorsque tu appelleras par exemple del my_object, len(my_object), my_object + 1, x in my_object, etc.
C'est donc l'une de ces méthodes qui permet aussi de définir ce qui se passe lorsque tu feras print(my_person).
Dans ce cas, Python essayera d'appeler la méthode __repr__ de ta classe (si elle en possède), c'est celle qu'il faut que tu définisse.
def __repr__(self):
return "Son nom est {}, son prénom est {}".format(self.nom, self.prenom)
C'est aussi cette méthode fonction qui est appelée lorsque tu utilises la méthode .format().
print("Ma personne: {}".format(my_person))
De même, il existe la méthode magique __eq__() qui permet de définir le résultat lorsque deux de tes objets sont comparés.
def __eq__(self, other):
if self.nom == other.nom and self.prenom == other.prenom:
return True
else:
return False
Tu pourras ainsi faire my_person_1 == my_person_2.
Généralement, tu n'as pas énormément d'attributs à comparer, donc il n'y a pas besoin d'avoir recours à des astuces comme comparer .__dict__ qui peut en plus être piégeux dans certains cas. Il faut donc mieux définir à la main quels sont les caractéristiques qui font que deux objets sont égaux.
Message édité le 07 janvier 2017 à 16:35:39 par Blaff5