3. 自定义三维向量类。 要求:用私有成员x,y,z表示三维向量的分量,提供公开接口add(),sub(),mul(),div()实现向量之间的加,减,标量间的乘和除运算。提供属性length支持查看向量长度。 给出至少一个实例
时间: 2024-10-06 20:04:25 浏览: 25
当你创建一个自定义的三维向量类时,你需要定义一个类,其中包含私有变量(通常是`_x`, `_y`, 和 `_z`)用于存储向量的每个分量。同时,你需要为这些操作提供公共的方法(`add()`, `sub()`, `mul()`, 和 `div()`)以便于用户使用。`length` 属性用于计算并返回向量的长度,通常我们会根据勾股定理来计算。
这是一个简单的例子:
```python
class Vector3D:
def __init__(self, x=0, y=0, z=0):
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)
else:
raise ValueError("Can only add another Vector3D object.")
# 向量相减
def sub(self, other):
if isinstance(other, Vector3D):
return Vector3D(self._x - other._x, self._y - other._y, self._z - other._z)
else:
raise ValueError("Can only subtract another Vector3D object.")
# 标量乘法
def mul(self, scalar):
if isinstance(scalar, (int, float)):
return Vector3D(self._x * scalar, self._y * scalar, self._z * scalar)
else:
raise ValueError("Can only multiply by a scalar value.")
# 向量除法
def div(self, scalar):
if isinstance(scalar, (int, float)) and scalar != 0:
return Vector3D(self._x / scalar, self._y / scalar, self._z / scalar)
else:
raise ZeroDivisionError("Cannot divide by zero.")
# 计算并返回向量长度
@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(v1.add(v2)) # 输出:Vector3D(5, 7, 9)
print(v1.sub(v2)) # 输出:Vector3D(-3, -3, -3)
print(v1.mul(2)) # 输出:Vector3D(2, 4, 6)
print(v1.div(2)) # 输出:Vector3D(0.5, 1.0, 1.5)
print(v1.length) # 输出:3.7416573867739413
```
阅读全文