In this chapter, you learned about:
Operator overloading
Overloading comparison operators using __eq__(), __ne__(),
__gt__(), __ge__(), __lt__(), and __le__()
NotImplemented
__bool__()
Overloading calculation using __add__(), __sub__(), __mul__(),
__truediv__(), __floordiv__(), __mod__(), __pow__(),
__lshift__(), __rshift__(), __and__(), __or__(), and
__xor__()
Righthand versions of overloading calculation operators
Shorthand versions of overloading calculation operators
Overloading unary operators __neg__(), __pos__(),
__invert__(), __abs__(), __int__(), __float__(),
__round__(), and __bytes__()
Overloading operators for sequence classes __len__(),
__getitem__(), __setitem__(), __delitem__(), __missing__(),
and __contains__()