|
205 | 205 |
|
206 | 206 | 较之以前,增加了一个特殊方法`__add__()`,它就是实现相加的特殊方法。在类中,有规定了加减乘除等运算的特殊方法。
|
207 | 207 |
|
208 |
| -在Python中,如果要实现某种运算,必须要有运算符,这是毫无疑问已经很熟悉的了。但是,这些运算符之所以能够被使用,都是因为有一些特殊方法才得以实现的。 |
| 208 | +在Python中,如果要实现某种运算,必须要有运算符,这是毫无疑问已经很熟悉的了。但是,这些运算符之所以能够被使用,都是因为有一些特殊方法才得以实现的。以下表格中列出几种常见运算符所对应的特殊方法,供参考。 |
209 | 209 |
|
210 | 210 | |二元运算符 | 特殊方法|
|
211 | 211 | |---------------------|-------------------|
|
212 |
| -| + | __add__,__radd__ | |
213 |
| -| - | __sub__,__rsub__ | |
214 |
| -| * | __mul__,__rmul__ | |
215 |
| -| / | __div__,__rdiv__,__truediv__,__rtruediv__ | |
216 |
| -| // | __floordiv__,__rfloordiv__ | |
217 |
| -| % | __mod__,__rmod__ | |
218 |
| -| ** | __pow__,__rpow__ | |
219 |
| -| << | __lshift__,__rlshift__ | |
220 |
| -| >> | __rshift__,__rrshift__ | |
221 |
| -| & | __and__,__rand__ | |
222 |
| -| ^ | __xor__,__rxor__ | |
223 |
| -| | | __or__,__ror__ | |
224 |
| -| += | __iaddr__ | |
225 |
| -| -= | __isub__ | |
226 |
| -| *= | __imul__ | |
227 |
| -| /= | __idiv__,__itruediv__ | |
228 |
| -| //= | __ifloordiv__ | |
229 |
| -| %= | __imod__ | |
230 |
| -| **= | __ipow__ | |
231 |
| -| <<= | __ilshift__ | |
232 |
| -| >>= | __irshift__ | |
233 |
| -| &= | __iand__ | |
234 |
| -| ^= | __ixor__ | |
235 |
| -| |= | __ior__ | |
236 |
| -| == | __eq__ | |
237 |
| -| !=,<> | __ne__ | |
238 |
| -| > | __get__ | |
239 |
| -| < | __lt__ | |
240 |
| -| >= | __ge__ | |
241 |
| -| <= | __le__ | |
| 212 | +| + | `__add__`, `__radd__` | |
| 213 | +| - | `__sub__`, `__rsub__` | |
| 214 | +| * | `__mul__` , `__rmul__` | |
| 215 | +| / | `__div__` , `__rdiv__`, `__truediv__`, `__rtruediv__` | |
| 216 | +| // | `__floordiv__`, `__rfloordiv__` | |
| 217 | +| % | `__mod__`, `__rmod__` | |
| 218 | +| ** | `__pow__`, `__rpow__` | |
| 219 | +| << | `__lshift__`, `__rlshift__` | |
| 220 | +| >> | ` __rshift__`, `__rrshift__` | |
| 221 | +| & | `__and__`, `__rand__` | |
| 222 | +| == | `__eq__` | |
| 223 | +| !=,<> | `__ne__` | |
| 224 | +| > | `__get__` | |
| 225 | +| < | `__lt__` | |
| 226 | +| >= | `__ge__` | |
| 227 | +| <= | `__le__` | |
242 | 228 |
|
243 | 229 | 以“+”为例,不论是实现`1 + 2`还是`'abc' + 'xyz'`,都是要执行`1.__add__(2)`或者`'abc'.__add__('xyz')`操作。也就是两个对象是否能进行加法运算,首先就要看相应的对象是否有`__add__()`方法(读者不妨在交互模式中使用`dir()`,看一看整数、字符串是否有`__add__()`方法),一旦相应的对象有__add__()方法,即使这个对象从数学上不可加,我们都可以用加法的形式,来表达`obj.__add__()`所定义的操作。在Python中,运算符起到简化书写的功能,但它依靠特殊方法实现。
|
244 | 230 |
|
|
260 | 246 | >>> print a + b #Python 3: print(a + b)
|
261 | 247 | 1/2
|
262 | 248 |
|
263 |
| -Python的魅力之一,就是它强大的标准库和第三方库,让你省心省力。 |
| 249 | +Python的魅力之一,就是它强大的标准库和第三方库,让你省心省力。 |
| 250 | + |
| 251 | +------ |
| 252 | + |
| 253 | +[总目录](./index.md) | [上节:多态和封装](./211.md) | [下节:特殊方法(1)](./212.md) |
| 254 | + |
| 255 | +如果你认为有必要打赏我,请通过支付宝:**qiwsir@126.com**,不胜感激。 |
0 commit comments