Par exemple, l'opérateur + peut ajouter mathématiquement deux nombres, combiner deux listes ou concaténer les chaînes. Voici un simple programme Python pour montrer un aperçu de l'opérateur + utilisé pour l'ajout et la concaténation.
Eh bien, ce qui vient si nous utilisons ces opérateurs pour des objets dans un défini par l'utilisateur classe? Prenons le programme suivant qui tente de simuler une place dans le schéma de dimensions 2D. Ci-dessous, vous pouvez déjà voir que parce que Python ne comprenait pas comment rejoindre 2 instances de coordonnées, un Erreur-type est généré.
Nous pouvons accomplir cette tâche dans Python via la surcharge de l'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 souligner à double sont classés en python comme méthodes spéciales ou fonctions magiques. Les fonctions utilisées pour mener 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, cela s'appelle. Nous rendrons notre classe conforme aux classes aux fonctions intégrées via des fonctions magiques. Dans Python, il existe plusieurs autres fonctions spéciales.
Opérateurs binaires ou mathématiques
Voici les détails des fonctions magiques pour surcharger les opérateurs binaires ou mathématiques Python.
Opérateurs relationnels ou de comparaison
Voici 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 certaines fonctions magiques pour surcharger les opérateurs d'affectation dans le code Python.
Maintenant, il est temps d'effacer quelques exemples de codes lorsque nous utilisons les méthodes magiques mentionnées ci-dessus et surcharger certains opérateurs.
Surcharger les opérateurs binaires ou mathématiques
Exemple 01: opérateur d'addition
Vous devrez appliquer le __ajouter_() Méthode de la classe pour surcharger le + opérateur. Un 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 coordon.__add __ (C1, C2).
Exemple 02: opérateur de multiplication
De même, vous pouvez même surcharger plusieurs opérateurs binaires en utilisant des fonctions magiques. Dans le même exemple ci-dessus, tout 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, nous avons obtenu -1, -1 Comme notre réponse.
Exemple 04: opérateur électrique
Nous avons surchargé le pouvoir opérateur tout en utilisant la fonction Power Magic; nous avons 1, 8.
Exemple 05: opérateur de module
Surchargeant l'opérateur du 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 de division et de plancher, pour surcharger.
Surcharger les opérateurs de comparaison
Python ne restreint pas la surcharge des opérateurs à des opérateurs binaires ou arithmétiques. Nous sommes également en mesure de surcharger les opérateurs de comparaison.
Exemple 01: moins que l'opérateur
Supposons que nous ayons besoin moins que le '<' symbol dans notre 'Coord classe à implémenter. 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 en instructions imprimées. En conséquence, nous obtiendrons cet objet C1 est moins que C2, Donc il sortira Vrai. D'autre part, C2 et C1 sont plus excellent que C3; C'est pourquoi les deux fausses sorties.
Exemple 02: pas égal à l'opérateur
Maintenant surcharger le Inégal (!=) opérateur de comparaison, vous obtiendrez Vrai Dans le cas de la première et deuxième déclaration d'impression car elle satisfait la condition que les deux objets ne sont pas égaux. D'un autre côté, l'objet 1 donne la même chose que l'objet 3, qui ne répond pas à l'exigence de non égale. C'est pourquoi la troisième déclaration d'impression sort 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 déclaration d'impression, nous avons 2> = 13, lequel est pas vrai; c'est pourquoi il cède faux. Dans les deuxième et troisième déclarations d'impression, nous avons obtenu 13> = 2 et 2> = 2, respectivement. Les deux sont Vrai car ils satisfont à l'état de supérieur ou égal à.
Essayez les autres opérateurs de comparaison, E.g., plus significatif que, égal à, «inférieur ou égal à» dans votre code aussi.
Surcharger les opérateurs d'affectation
Jetez un œil à un exemple de surcharge de l'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 passe ses valeurs à 'soi.y ' et 'soi.z ' variables, respectivement. D'un autre côté, l'objet C2 passe ses valeurs à 'autre.y ' et 'autre.z '.
Objet C1 a des valeurs de soi.y = 1 et soi.z = 1 tout de suite. L'object C2 valeurs 'autre.y = -2 ' et 'autre.z = -3 ' a été transmis à 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 de 3 et 4, a été sauvé en soi.x 'et' soi.z 'en raison de l'opérateur d'affectation de' =.`` En imprimé, ce code sortira 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 des opérateurs.