定义一个三维向量类,并定文相应的特殊方法实现两个该类对象之间的加,减运算 (要求支持运算符十.),实现该类对象与标量的乘、除运算(要求支持运算符*、).以及 向量长度的计算(要求使用属性实现)。
时间: 2023-10-27 09:14:40 浏览: 198
好的,我可以帮你定义一个三维向量类,并实现相应的方法。
```python
class Vector3D:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __add__(self, other):
return Vector3D(self.x+other.x, self.y+other.y, self.z+other.z)
def __sub__(self, other):
return Vector3D(self.x-other.x, self.y-other.y, self.z-other.z)
def __mul__(self, scalar):
return Vector3D(self.x*scalar, self.y*scalar, self.z*scalar)
def __truediv__(self, scalar):
return Vector3D(self.x/scalar, self.y/scalar, self.z/scalar)
@property
def length(self):
return (self.x**2 + self.y**2 + self.z**2)**0.5
```
在上面的代码中,我们定义了一个 `Vector3D` 类,它具有三个属性 `x`、`y`、`z`,分别代表三维空间中的向量坐标。我们通过重载了 `__add__`、`__sub__`、`__mul__`、`__truediv__` 运算符实现了向量的加、减、乘、除运算。其中,乘、除运算都是用标量与向量进行运算。我们还使用了 `@property` 装饰器来实现了向量长度的计算,当我们使用 `vector.length` 时,会自动调用 `length` 方法来计算向量长度。
现在我们可以创建两个向量进行加减运算,也可以将一个向量与标量进行乘除运算。例如:
```python
v1 = Vector3D(1, 2, 3)
v2 = Vector3D(4, 5, 6)
v3 = v1 + v2
print(v3.x, v3.y, v3.z) # 5 7 9
v4 = v2 - v1
print(v4.x, v4.y, v4.z) # 3 3 3
v5 = v1 * 2
print(v5.x, v5.y, v5.z) # 2 4 6
v6 = v2 / 2
print(v6.x, v6.y, v6.z) # 2.0 2.5 3.0
length = v1.length
print(length) # 3.7416573867739413
```
阅读全文