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^


Formation continue
  • Recommandations de cours
  • Téléchargement du didacticiel
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!