[ Python ] 常用运算符对应的魔术方法
https://www.cnblogs.com/yeungchie/
Python中的运算符丰富多样,它们可以分为多个类别,包括算术运算符、比较运算符、逻辑运算符、位运算符、身份运算符、成员运算符等。每个运算符都有其对应的魔术方法(也称为特殊方法或dunder方法,即双下划线方法),这些方法在特定情况下会被Python调用来实现运算符的行为。下面是一些常见运算符及其对应的魔术方法:
算术运算符
+
加法:__add__(self, other)
-
减法:__sub__(self, other)
*
乘法:__mul__(self, other)
/
除法(Python 3 中为真除法):__truediv__(self, other)
//
整除:__floordiv__(self, other)
%
取模:__mod__(self, other)
**
幂运算:__pow__(self, other[, modulo])
+
(一元正号):__pos__(self)
-
(一元负号):__neg__(self)
~
(按位取反,不常用):__invert__(self)
比较运算符
==
等于:__eq__(self, other)
!=
不等于:__ne__(self, other)
<
小于:__lt__(self, other)
>
大于:__gt__(self, other)
<=
小于等于:__le__(self, other)
>=
大于等于:__ge__(self, other)
逻辑运算符
Python中没有直接的魔术方法对应逻辑运算符,逻辑运算通常通过
and
、or
、not
关键字实现
位运算符
&
按位与:__and__(self, other)
|
按位或:__or__(self, other)
^
按位异或:__xor__(self, other)
<<
左移:__lshift__(self, other)
>>
右移:__rshift__(self, other)
身份运算符
is
没有直接对应的魔术方法,因为这是Python解释器直接处理的。is not
同上。
成员运算符
in
没有直接对应的魔术方法,但可以通过重写__contains__(self, item)
来影响in
的判断逻辑。not in
间接通过__contains__
方法影响。
其他特殊方法
+
(用于字符串拼接或列表合并):根据对象类型不同,可能调用__add__
或特定类型的其他方法。[]
(索引和切片):__getitem__(self, key)
、__setitem__(self, key, value)
、__delitem__(self, key)
()
(调用):__call__(self[, args...])
这些魔术方法允许你在自定义类中重载运算符,从而让类实例支持这些运算符的行为。需要注意的是,实现这些方法时应遵循运算符的常规语义,以保持代码的一致性和可预测性。