-Operatoren. J wird wahrscheinlich die folgenden zwei Kategorien auflisten:
1. Vergleichsoperatoren
| <🎜>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 td> |
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 Methode | Anleitung |
__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^ |