Python

Surcharge d'opérateur en Python

Surcharge d'opérateur en Python
La surcharge correspond à la tendance d'une méthode ou d'un opérateur à agir de multiples façons au sens de la programmation, en fonction des paramètres fournis à la technique ou des opérandes sur lesquels l'opérateur opère. La surcharge de l'opérateur signifie qu'une signification prolongée est donnée au-dessus de leur signification fonctionnelle prédéfinie.  Les opérateurs Python fonctionnent pour les classes intégrées, mais pour différents types, le même opérateur agit différemment. Nous verrons comment nous pourrions effectuer une surcharge d'opérateur en Python dans ce guide.

Par exemple, l'opérateur + peut additionner mathématiquement deux nombres, combiner deux listes ou concaténer des chaînes. Voici un programme python simple pour montrer un aperçu de l'opérateur + utilisé pour l'addition et la concaténation.

Eh bien, que se passe-t-il si nous utilisons ces opérateurs pour des objets dans un défini par l'utilisateur classer? Prenons le programme suivant qui tente de simuler une tache dans le schéma 2D des dimensions. Ci-dessous, vous pouvez déjà le voir car Python n'a pas compris comment joindre 2 instances de coordonnées, un Erreur-type est généré.

Nous pouvons accomplir cette tâche en Python via la surcharge d'opérateur, mais tout d'abord, comprenons les méthodes spéciales.

Méthodes magiques spéciales

Méthodes de classe commençant par le double trait de soulignement sont classés en Python en tant que méthodes spéciales ou fonctions magiques. Les fonctions qui sont utilisées pour effectuer des activités spécifiques. Les méthodes habituelles que nous décrivons pour une classe ne sont pas de telles fonctions. L'un d'eux serait le __init_() fonction que nous avons mentionné ci-dessus. Chaque fois que nous construisons un nouvel objet dans cette classe, il s'appelle. Nous rendrons notre classe conforme aux fonctions intégrées via des fonctions magiques. En Python, il existe plusieurs autres fonctions spéciales.

Opérateurs binaires ou mathématiques

Voici le détail des fonctions magiques pour surcharger les opérateurs binaires ou mathématiques python.

Opérateurs relationnels ou de comparaison

Vous trouverez ci-dessous les détails des fonctions magiques pour surcharger la comparaison python ou les opérateurs relationnels.

Opérateurs d'affectation

Voici les détails de quelques fonctions magiques pour surcharger les opérateurs d'affectation en code python.

Maintenant, il est temps d'entrevoir quelques exemples de codes lorsque nous utilisons les méthodes magiques mentionnées ci-dessus et surchargeons certains opérateurs.

Surcharger les opérateurs binaires ou mathématiques

Exemple 01 : Opérateur d'ajout
Vous devrez faire respecter la __ajouter_() méthode dans la classe pour surcharger le + opérateur. Le grand devoir arrive avec une grande force. À l'intérieur de cette méthode, vous pouvez faire tout ce que vous voulez. Mais il est beaucoup plus rationnel de retourner le 'Coord' objet de la somme de coordonnées.

Lorsque vous avez essayé c1 + c2, Python appelle en fait sa magie .__add__() méthode comme c1.__add__(c2) ou Coord.__ajouter__(c1,c2).

Exemple 02 : Opérateur de multiplication
De même, vous pouvez même surcharger plusieurs opérateurs binaires à l'aide de fonctions magiques. Dans le même exemple ci-dessus, en surchargeant l'opérateur de multiplication, nous obtenons 2, 6 comme notre réponse à la fonction magique.

Exemple 03 : Opérateur de soustraction
En utilisant l'opérateur de soustraction, on obtient -1, -1 comme notre réponse.

Exemple 04 : Opérateur de puissance
Nous avons surchargé le Puissance opérateur tout en utilisant la fonction magique de puissance; nous avons 1, 8.

Exemple 05 : Opérateur de module
En surchargeant l'opérateur module, nous avons utilisé le __mod__ fonction magique pour obtenir le module.

Vous pouvez également utiliser les autres opérateurs mathématiques, e.g., opérateur de division et de division d'étage, pour la surcharge.

Surcharger les opérateurs de comparaison

Python ne limite pas la surcharge des opérateurs aux seuls opérateurs binaires ou arithmétiques. Nous sommes également capables de surcharger les opérateurs de comparaison.

Exemple 01 : Opérateur inférieur à
Supposons que nous ayons besoin de moins que le '<' symbol dans notre 'Coord' classe à mettre en œuvre. Comparons la valeur de ces arguments de la source et donnons la réponse. Comme d'habitude, il peut être appliqué. Nous avons trois objets, et nous les comparons dans des déclarations d'impression. En conséquence, nous obtiendrons cet objet c1 est moins que c2, donc il sort Vrai. D'autre part, c2 et c1 sont plus excellent que c3; c'est pourquoi les deux False output.

Exemple 02 : Différent de l'opérateur
En surchargeant maintenant le Inégal (!=) opérateur de comparaison, vous obtiendrez Vrai dans le cas de la première et de la deuxième instruction print car elle satisfait à la condition que les deux objets ne soient pas égaux. D'autre part, l'objet 1 donne la même chose que l'objet 3, qui ne répond pas à l'exigence de Non égal. C'est pourquoi la troisième instruction print affiche Faux par conséquent.

Exemple 03 : Supérieur ou égal à l'opérateur
Essayons le même exemple pour surcharger le Meilleur que ou égal à l'opérateur. Dans le cas de la première instruction print, nous avons 2 >= 13, lequel est pas vrai; c'est pourquoi il donne Faux. Dans les deuxième et troisième instructions d'impression, nous avons obtenu 13>=2 et 2>=2, respectivement. Les deux sont Vrai car ils satisfont à la condition supérieure ou égale à.

Essayez les autres opérateurs de comparaison, e.g., plus significatif que, égal à, "inférieur ou égal à" dans votre code également.

Surcharger les opérateurs d'affectation

Jetez un œil à un exemple de surcharge d'opérateur d'affectation. Nous prenons un exemple similaire avec la surcharge du '-=' opérateur d'assignation. Nous avons défini deux objets ayant des valeurs de coordonnées y et z. Premier objet c1 transmet ses valeurs à 'soi.vous et 'soi.z' variables, respectivement. D'autre part, l'objet c2 transmet ses valeurs à 'autre.vous et 'autre.z'.

Objet c1 a des valeurs de soi.y=1 et soi.z=1 à l'heure actuelle. L'object c2 valeurs 'autre.y = -2' et 'autre.z = -3' a été passé à soustrait de l'objet c1 valeurs. En conséquence, les résultats c1 - c2 soi.y - autre.y = 1-(-2) et soi.z - autre.z = 1-(-3). Le résultat calculé, qui est 3 et 4, a été enregistré dans 'self.x' et 'soi.z' en raison de l'opérateur d'affectation de '=.' A l'impression, ce code affichera le résultat de l'objet c1, qui a deux variables soi.y = 3 et soi.z = 4.

Conclusion

Nous essayons de couvrir tous les opérateurs de votre code pour une meilleure compréhension de la surcharge d'opérateurs.

Le bouton de clic gauche de la souris ne fonctionne pas sous Windows 10
Si vous utilisez une souris dédiée avec votre ordinateur portable ou de bureau mais que le le clic gauche de la souris ne fonctionne pas sur Windows 1...
Le curseur saute ou se déplace de manière aléatoire lors de la saisie dans Windows 10
Si vous constatez que le curseur de votre souris saute ou se déplace tout seul, automatiquement, au hasard lors de la saisie sur un ordinateur portabl...
Comment inverser le sens de défilement de la souris et des pavés tactiles dans Windows 10
Souris et Pavé tactiles rendent non seulement l'informatique facile, mais plus efficace et moins chronophage. Nous ne pouvons pas imaginer une vie san...