Python定义一个三维向量类,定义相应的特殊方法实现两个该类对象之间的加、减运算(要求支持运算符+、-),实现该类对象与标量的乘、除运算(要求支持运算符*、/),定义一个普通实例方法实现两个该类对象之间的求距离运算,距离计算公式为:),使用属性实现向量长度的计算。
时间: 2024-11-25 20:12:07 浏览: 18
在Python中定义和使用抽象类的方法
5星 · 资源好评率100%
在Python中,你可以创建一个名为`Vector3D`的类来表示三维向量,并通过定义一些特殊方法(也称为魔术方法或dunder methods)来实现向量间的加减乘除运算以及距离和长度的计算。下面是一个简单的示例:
```python
class Vector3D:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
# 特殊方法:向量加法
def __add__(self, other):
if isinstance(other, Vector3D):
return Vector3D(self.x + other.x, self.y + other.y, self.z + other.z)
elif isinstance(other, (int, float)):
return Vector3D(self.x + other, self.y + other, self.z + other)
else:
raise TypeError("Unsupported operand type for +")
# 特殊方法:向量减法
def __sub__(self, other):
if isinstance(other, Vector3D):
return Vector3D(self.x - other.x, self.y - other.y, self.z - other.z)
elif isinstance(other, (int, float)):
return Vector3D(self.x - other, self.y - other, self.z - other)
else:
raise TypeError("Unsupported operand type for -")
# 特殊方法:向量与标量乘法
def __mul__(self, scalar):
return Vector3D(self.x * scalar, self.y * scalar, self.z * scalar)
# 特殊方法:向量与标量除法
def __truediv__(self, scalar):
if scalar != 0:
return Vector3D(self.x / scalar, self.y / scalar, self.z / scalar)
else:
raise ZeroDivisionError("Cannot divide by zero")
# 普通实例方法:求两个向量的距离
def distance(self, other):
return ((self.x - other.x) ** 2 + (self.y - other.y) ** 2 + (self.z - other.z) ** 2) ** 0.5
# 属性:向量长度
@property
def length(self):
return (self.x**2 + self.y**2 + self.z**2) ** 0.5
# 使用示例
v1 = Vector3D(1, 2, 3)
v2 = Vector3D(4, 5, 6)
print(f"v1 + v2: {v1 + v2}")
print(f"v1 - v2: {v1 - v2}")
print(f"v1 * 2: {v1 * 2}")
print(f"v1 / 2: {v1 / 2}")
print(f"Distance between v1 and v2: {v1.distance(v2)}")
print(f"Length of v1: {v1.length}")
```
阅读全文