python运算符重载
时间: 2023-10-14 22:27:33 浏览: 92
Python中的运算符重载是指通过定义类的特殊方法,使得类的实例对象能够响应内置运算符和函数的调用。这些特殊方法包括:
1. `__add__(self, other)`:定义加法运算符`+`的行为;
2. `__sub__(self, other)`:定义减法运算符`-`的行为;
3. `__mul__(self, other)`:定义乘法运算符`*`的行为;
4. `__truediv__(self, other)`:定义除法运算符`/`的行为;
5. `__floordiv__(self, other)`:定义整除运算符`//`的行为;
6. `__mod__(self, other)`:定义取模运算符`%`的行为;
7. `__pow__(self, other)`:定义幂运算符`**`的行为;
8. `__lt__(self, other)`:定义小于运算符`<`的行为;
9. `__le__(self, other)`:定义小于等于运算符`<=`的行为;
10. `__eq__(self, other)`:定义等于运算符`==`的行为;
11. `__ne__(self, other)`:定义不等于运算符`!=`的行为;
12. `__gt__(self, other)`:定义大于运算符`>`的行为;
13. `__ge__(self, other)`:定义大于等于运算符`>=`的行为;
14. `__len__(self)`:定义`len()`函数的行为;
15. `__str__(self)`:定义`str()`函数的行为。
下面是一个简单的例子:
```python
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __sub__(self, other):
return Vector(self.x - other.x, self.y - other.y)
def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)
def __str__(self):
return f"({self.x}, {self.y})"
```
在上面的例子中,我们定义了一个`Vector`类,重载了加法、减法和乘法运算符,以及`str()`函数。这样,我们就可以通过运算符和函数来操作`Vector`对象。例如:
```python
v1 = Vector(1, 2)
v2 = Vector(3, 4)
# 加法
v3 = v1 + v2
print(v3) # 输出:(4, 6)
# 减法
v4 = v2 - v1
print(v4) # 输出:(2, 2)
# 乘法
v5 = v1 * 2
print(v5) # 输出:(2, 4)
# str()函数
print(str(v1)) # 输出:(1, 2)
```
阅读全文