recherche
  • Se connecter
  • S'inscrire
Réinitialisation du mot de passe réussie

Suivez les projets qui vous intéressent et découvrez les dernières actualités les concernant.

Méthodes magiques liées aux opérateurs

Il existe tellement de méthodes magiques liées aux opérateurs que je vais énumérer grossièrement les deux catégories suivantes :

1. Opérateurs de comparaison

Méthodes magiquesExplication
__cmp__(self , autre)Si la méthode renvoie un nombre négatif, cela signifie soi < autre; Renvoie un nombre positif, signifie soi > Il est fortement déconseillé de définir __cmp__. Au lieu de cela, il est préférable de définir __lt__, __eq__ et d'autres méthodes séparément pour implémenter la fonction de comparaison. __cmp__ est obsolète dans Python3.
__eq__(self, other) définit le comportement de l'opérateur de comparaison ==
__ne__(self, other) définit le comportement de l'opérateur de comparaison !=
__lt__(self, other) définit le comportement de l'opérateur de comparaison <
__gt__(self, other) définit le comportement de l'opérateur de comparaison > Le comportement de l'opérateur <=
__ge__(self, other) définit le comportement de l'opérateur de comparaison >=

Regardez un exemple simple pour comprendre :

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
class Number(object):
    def __init__(self, value):
        self.value = value
    def __eq__(self, other):
        print('__eq__')
        return self.value == other.value
    def __ne__(self, other):
        print('__ne__')
        return self.value != other.value
    def __lt__(self, other):
        print('__lt__')
        return self.value < other.value
    def __gt__(self, other):
        print('__gt__')
        return self.value > other.value
    def __le__(self, other):
        print('__le__')
        return self.value <= other.value
    def __ge__(self, other):
        print('__ge__')
        return self.value >= other.value
if __name__ == '__main__':
    num1 = Number(2)
    num2 = Number(3)
    print('num1 == num2 ? --------> {} \n'.format(num1 == num2))
    print('num1 != num2 ? --------> {} \n'.format(num1 == num2))
    print('num1 < num2 ? --------> {} \n'.format(num1 < num2))
    print('num1 > num2 ? --------> {} \n'.format(num1 > num2))
    print('num1 <= num2 ? --------> {} \n'.format(num1 <= num2))
    print('num1 >= num2 ? --------> {} \n'.format(num1 >= num2))

Le résultat de sortie est :

__eq__
num1 == num2 ? --------> False
__eq__
num1 != num2 ? --------> False
__lt__
num1 < num2 ? --------> True
__gt__
num1 > num2 ? --------> False
__le__
num1 <= num2 ? --------> True
__ge__
num1 >= num2 ? --------> False

2.

Méthode MagiqueInstructions
__add__(self, other) implémente l'opération d'addition
__sub__(self, other)implémente l'opération de soustraction
__mul__(self, other) implémente l'opération de multiplication
__floordiv__(self, other) implémente l'opérateur //
___div__(self, other) implémente l'opérateur / Cette méthode est abandonnée en Python3 La raison est que dans Python3, la division par défaut est C'est le cas. true division
__truediv__(self, other) implémente true division Cette méthode ne prendra effet que si vous déclarez from __future__ import division
__mod__(self, other) implémente l'opérateur % , le reste. opération
__divmod__(self, other) implémente la fonction intégrée divmod()
__pow__(self, other) implémente la ** Nième opération de puissance
__lshift__(self. , autre) implémente des opérations sur bits<<
__rshift__(soi, autre) implémente des opérations sur bits>>
__et__(soi, autre) implémente des opérations sur bits&
__ou__( soi, autre) implémente des opérations sur bits`
__xor__(soi, autre) implémente des opérations sur bits^


nouveau fichier
Réinitialiser le code
Opération automatique
soumettre
Aperçu Clear
  • Recommandations de cours
  • Téléchargement du didacticiel