亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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
    <samp id="jyi6p"><b id="jyi6p"></b></samp>
      • <ruby id="jyi6p"></ruby>