Operatorbezogen...LOGIN

Operatorbezogene magische Methoden

Es gibt zu viele magische Methoden im Zusammenhang mit

-Operatoren. J wird wahrscheinlich die folgenden zwei Kategorien auflisten:

1. Vergleichsoperatoren

Magische MethodeAnleitung
__cmp__(self, other)如果该方法返回负数,说明 self < other; 返回正数,说明 self > other; 返回 0 说明 self == other 。强烈不推荐来定义 __cmp__ , 取而代之, 最好分别定义 __lt__, __eq__ 等方法从而实现比较功能。 __cmp__ 在 Python3 中被废弃了。
__eq__(self, other)定义了比较操作符 == 的行为
__ne__(self, other)定义了比较操作符 != 的行为
__lt__(self, other) 定义了比较操作符 < 的行为
__gt__(self, other)定义了比较操作符 > 的行为
__le__(self, other) 定义了比较操作符 <= 的行为
__ge__(self, other) 定义了比较操作符 >= 的行为
Magische Methode<🎜>
<🎜>Anleitung<🎜>
__cmp__(self, other)Wenn die Methode eine negative Zahl zurückgibt, gibt self < other eine positive Zahl zurück, was bedeutet, dass self > Es wird dringend davon abgeraten, __cmp__ zu definieren. Stattdessen ist es am besten, __lt__, __eq__ und andere Methoden separat zu definieren, um die Vergleichsfunktion zu implementieren. __cmp__ ist in Python3 veraltet.
__eq__(self, other)Definiert das Verhalten des Vergleichsoperators ==
__ne__(self, other)Definiert das Verhalten des Vergleichsoperators !=
__lt__(self, other) Definiert das Verhalten des Vergleichsoperators<
__gt__(self, other)Vergleichsoperator definiert> Verhalten
__le__(self, other) Definiert das Verhalten des Vergleichsoperators<=
__ge__(self, other) definiert den Vergleichsoperator>= Verhalten

Sehen Sie sich zum Verständnis ein einfaches Beispiel an:

#!/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))

Das Ausgabeergebnis ist:

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

Arithmetische Operatoren

Magische MethodeAnleitung
__add__(self, other) implementiert die Additionsoperation
__sub__(self, other) Implementiert die Subtraktionsoperation
__mul__(self, other) Implementiert die Multiplikationsoperation
__floordiv__( self, other) implementiert den //-Operator
___div__(self, other) implementiert den /-Operator. Diese Methode ist in Python3 veraltet. Der Grund dafür ist, dass in Python3 die Division standardmäßig auf „True Division“ eingestellt ist.
__truediv__(self, other) Implementiert die True Division. Nur wenn Sie diese Methode aus __future__ importieren wird wirksam
__mod__(self, other) implementiert den %-Operator, Restoperation
__divmod__(self, other) implementiert die integrierte Funktion divmod()
__pow__(self, other) implementiert die **-Operation
__lshift__(self, other) implementiert Bitoperation<<
__rshift__(self, other) Implementiert Bitoperationen>>
__und__(selbst, andere) Implementiert Bitoperationen&
__oder__ (self, other) implementiert Bitoperationen`
__xor__(self, other) implementiert Bitoperationen^


nächsten Abschnitt
KapitelKursunterlagen