search
  • Sign In
  • Sign Up
Password reset successful

Follow the proiects vou are interested in andi aet the latestnews about them taster

Operator related magic methods

There are too many magic methods related to operators. J will roughly list the following two categories:

1. Comparison operators

##__cmp__(self, other)if This method returns a negative number, indicating self < other; Returns a positive number, indicating self > other; Returns 0, indicating self == other. It is strongly not recommended to define __cmp__. Instead, it is best to define __lt__, __eq__ and other methods separately to implement the comparison function. __cmp__ is deprecated in Python3. __eq__(self, other)Defines the behavior of the comparison operator ==__ne__(self, other )Defines the behavior of comparison operator !=__lt__(self, other) Defines the behavior of comparison operator <__gt__(self, other)Defines the behavior of the comparison operator>__le__(self, other) Defines the behavior of the comparison operator <= __ge__(self, other) Defines the behavior of the comparison operator >=

You can understand it by looking at a simple example:

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

The output result is:

__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. Arithmetic operator

Magic methodDescription
##__and__(self, other) Implements bit operations&__or__(self, other) Implements bit operations`__xor__(self, other) Implemented bit operations^
Magic MethodInstructions
__add__(self, other) Implements the addition operation
__sub__(self, other) Implements the subtraction operation
__mul__(self, other) Implements the multiplication operation
__floordiv__( self, other) Implements the // operator
___div__(self, other) Implements the / operator. This method is available in Python3 Deprecated. The reason is that in Python3, division defaults to true division
__truediv__(self, other) implements true division. Only if you declare from __future__ import division This method will take effect
__mod__(self, other) Implements the % operator and remainder operation
__divmod__(self, other) Implements the divmod() built-in function
__pow__(self, other) Implements the ** operation. Nth power operation
__lshift__(self, other) implements bit operation<<
__rshift__( self, other) Implements bit operations>>


new file
Reset Code
Automatic operation
submit
Preview Clear