Les méthodes magiques en POO Python

1. A propos des méthodes magiques

En Python, les méthodes magiques, également appelées méthodes spéciales ou méthodes du double underscore (__), sont des méthodes prédéfinies qui permettent aux objets de se comporter de manière spécifique lorsqu'ils sont utilisés avec des opérateurs ou des fonctions intégrées. Ces méthodes sont appelées "magiques" car elles peuvent sembler invisibles aux programmeurs débutants, mais elles sont en fait utilisées en arrière-plan pour effectuer des tâches spécifiques.

Voici quelques-unes des méthodes magiques les plus couramment utilisées en Python pour la programmation orientée objet :

  1. init : Cette méthode est appelée lorsque l'objet est instancié. Elle est utilisée pour initialiser les attributs de l'objet.
  2. str : Cette méthode est utilisée pour définir une représentation sous forme de chaîne de caractères de l'objet. Elle est appelée lorsque la fonction print() est utilisée pour l'objet.
  3. repr : Cette méthode est utilisée pour définir une représentation sous forme de chaîne de caractères de l'objet. Elle est appelée lorsque la fonction repr() est utilisée pour l'objet.
  4. len : Cette méthode est utilisée pour définir la longueur de l'objet. Elle est appelée lorsque la fonction len() est utilisée pour l'objet.
  5. getitem : Cette méthode est utilisée pour accéder à un élément spécifique de l'objet à l'aide de la notation des crochets ([ ]).
  6. setitem : Cette méthode est utilisée pour modifier un élément spécifique de l'objet à l'aide de la notation des crochets ([ ]).
  7. delitem : Cette méthode est utilisée pour supprimer un élément spécifique de l'objet à l'aide de la notation des crochets ([ ]).
  8. add : Cette méthode est utilisée pour ajouter deux objets ensemble.
  9. sub : Cette méthode est utilisée pour soustraire un objet d'un autre.
  10. eq : Cette méthode est utilisée pour tester l'égalité entre deux objets.

En utilisant les méthodes magiques, vous pouvez personnaliser le comportement des objets dans votre programme et rendre votre code plus lisible et plus facile à maintenir.

2. Exemples d'usage des méthodes magiques

Voici quelques exemples d'utilisation courante des méthodes magiques en Python :

2.1 La méthode __init__()

Cette méthode est utilisée pour initialiser les attributs d'un objet lorsqu'il est créé.

Exemple

2.2 La méthode __str__()

Cette méthode est utilisée pour définir une représentation sous forme de chaîne de caractères de l'objet.

Exemple

2.3 La méthode len()

Cette méthode est utilisée pour définir la longueur de l'objet.

Exemple

2.4 La méthode __getitem__()

Cette méthode est utilisée pour accéder à un élément spécifique de l'objet à l'aide de la notation des crochets ([ ]).

Exemple

2.4 La méthode __add__()

Cette méthode est utilisée pour ajouter deux objets ensemble.

Exemple

En utilisant les méthodes magiques, vous pouvez personnaliser le comportement des objets dans votre programme et rendre votre code plus lisible et plus facile à maintenir.



3. Principales différences entre une méthode d'instance et une méthode magique

  1. Une méthode d'instance : en programmation orientée objet en Python, est une méthode qui est définie dans une classe et qui peut être appelée sur une instance de cette classe. Une méthode d'instance prend au moins un argument, qui est généralement appelé "self", et qui fait référence à l'instance sur laquelle la méthode est appelée.
  2. Une méthode magique: également appelée méthode spéciale ou méthode du double underscore (__), est une méthode prédéfinie en Python qui est appelée automatiquement par l'interpréteur dans certaines situations spécifiques, généralement liées à l'utilisation d'opérateurs intégrés ou de fonctions. Les méthodes magiques sont appelées "magiques" car elles permettent de personnaliser le comportement des objets en arrière-plan, sans que le développeur ait besoin d'appeler explicitement la méthode.
  3. La principale différence: entre une méthode d'instance et une méthode magique est que la méthode d'instance est explicitement appelée par le développeur lorsqu'il souhaite exécuter une certaine action sur l'instance, tandis que la méthode magique est appelée automatiquement par l'interpréteur lorsqu'une action spécifique est effectuée sur l'instance, telle que l'accès à un attribut ou l'utilisation d'un opérateur.

Exemple

  1. La méthode "area()": est une méthode d'instance qui calcule la surface d'un rectangle. Cette ne s'exécute que si elle est explicitement appelée par le développeur.
  2. La méthode "str()": est une méthode magique qui définit une représentation sous forme de chaîne de caractères de l'objet, et est appelée automatiquement lorsque l'objet est utilisé avec la fonction "print()".
  3. La principale différence: entre une méthode d'instance et une méthode magique est que la méthode d'instance est explicitement appelée par le développeur, tandis que la méthode magique est appelée automatiquement par l'interpréteur dans des situations spécifiques. Les méthodes magiques permettent de personnaliser le comportement des objets de manière transparente pour le développeur.

4. Liste des méthodes magiques d'un objet d'instance

Il existe un grand nombre de méthodes magiques en Python, chacune ayant une utilisation spécifique pour personnaliser le comportement des objets. Voici une liste de certaines des méthodes magiques les plus couramment utilisées :

  1. __new__(cls, *args, **kwargs): Cette méthode est appelée lorsqu'un nouvel objet est créé et est utilisée pour créer et initialiser l'objet. La méthode ".new()" doit renvoyer l'objet nouvellement créé.
  2. __init__(self, *args, **kwargs): Cette méthode est appelée immédiatement après la création d'un nouvel objet et est utilisée pour initialiser les attributs de l'objet. Cette méthode ne renvoie rien et prend en paramètre l'objet nouvellement créé ainsi que les arguments passés lors de l'instanciation.
  3. __str__(self): Cette méthode est appelée lorsque la fonction "str()" est appelée sur l'objet et est utilisée pour renvoyer une représentation sous forme de chaîne de caractères de l'objet.
  4. __repr__(self): Cette méthode est appelée lorsque la fonction "repr()" est appelée sur l'objet et est utilisée pour renvoyer une représentation sous forme de chaîne de caractères de l'objet qui peut être utilisée pour recréer l'objet.
  5. __len__(self): Cette méthode est appelée lorsque la fonction "len()" est appelée sur l'objet et est utilisée pour renvoyer la taille de l'objet.
  6. __getitem__(self, key): Cette méthode est appelée lorsque l'objet est indexé avec des crochets et est utilisée pour renvoyer l'élément correspondant à la clé spécifiée.
  7. __setitem__(self, key, value): Cette méthode est appelée lorsqu'un élément est affecté à un objet en utilisant l'opérateur d'indexation et est utilisée pour affecter la valeur à la clé spécifiée.
  8. __delitem__(self, key): Cette méthode est appelée lorsqu'un élément est supprimé d'un objet en utilisant l'opérateur d'indexation et est utilisée pour supprimer l'élément correspondant à la clé spécifiée.
  9. __eq__(self, other): Cette méthode est appelée lorsque l'opérateur de comparaison "== " est utilisé pour comparer l'objet avec un autre objet et est utilisée pour renvoyer True si les deux objets sont égaux, False sinon.
  10. __lt__(self, other): Cette méthode est appelée lorsque l'opérateur de comparaison "<" est utilisé pour comparer l'objet avec un autre objet et est utilisée pour renvoyer True si l'objet est inférieur à l'autre objet, False sinon.
  11. __gt__(self, other): Cette méthode est appelée lorsque l'opérateur de comparaison ">" est utilisé pour comparer l'objet avec un autre objet et est utilisée pour renvoyer True si l'objet est supérieur à l'autre objet, False sinon.
  12. __add__(self, other): Cette méthode est appelée lorsque l'opérateur "+" est utilisé pour ajouter l'objet à un autre objet et est utilisée pour renvoyer le résultat de l'addition.
  13. __sub__(self, other): Cette méthode est appelée lorsque l'opérateur "-" est utilisé pour soustraire un objet d'un autre objet et est utilisée pour renvoyer le résultat de la soustraction.
  14. __mul__(self, other): Cette méthode est appelée lorsque l'opérateur "*" est utilisé pour multiplier l'objet par un autre objet et est utilisée pour renvoyer le résultat de la multiplication.
  15. __truediv__(self, other): Cette méthode est appelée lorsque l'opérateur "/" est utilisé pour diviser l'objet par un autre objet et est utilisée pour renvoyer le résultat de la division.
  16. __floordiv__(self, other): Cette méthode est appelée lorsque l'opérateur "//" est utilisé pour diviser l'objet par un autre objet en effectuant une division entière et est utilisée pour renvoyer le résultat de la division entière.
  17. __mod__(self, other): Cette méthode est appelée lorsque l'opérateur "%" est utilisé pour effectuer le modulo de l'objet par un autre objet et est utilisée pour renvoyer le reste de la division.
  18. __pow__(self, other[, modulo]): Cette méthode est appelée lorsque l'opérateur "**" est utilisé pour élever l'objet à une puissance et est utilisée pour renvoyer le résultat de l'exponentiation.
  19. __contains__(self, item): Cette méthode est appelée lorsque l'opérateur "in" est utilisé pour vérifier si un élément est présent dans l'objet et est utilisée pour renvoyer True si l'élément est présent, False sinon.
  20. __enter__(self): Cette méthode est appelée lorsque le bloc "with" est entré et est utilisée pour initialiser l'objet pour être utilisé dans le bloc "with".
  21. __exit__(self, exc_type, exc_value, traceback): Cette méthode est appelée lorsque le bloc "with" est quitté et est utilisée pour nettoyer l'objet avant sa sortie.

Remarque

Cette liste n'est pas exhaustive, il existe de nombreuses autres méthodes magiques en Python qui peuvent être utilisées pour personnaliser le comportement des objets.

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply

Your email address will not be published. Required fields are marked *