定义一个三维向量类Vector3,并实现python中的特殊方法以进行两个该类对象之间的加、减、乘、除运算(要求支持运算符+、-、*、/);实现向量长度的计算(要求使用属性实现,且该属性是可读、可写、可删除)
时间: 2023-07-10 13:33:35 浏览: 32
好的,我了解了你的要求。下面是Vector3类的实现代码:
```python
class Vector3:
def __init__(self, x=0, y=0, z=0):
self._x = x
self._y = y
self._z = z
# 定义向量加法
def __add__(self, other):
return Vector3(self._x + other._x, self._y + other._y, self._z + other._z)
# 定义向量减法
def __sub__(self, other):
return Vector3(self._x - other._x, self._y - other._y, self._z - other._z)
# 定义向量乘法
def __mul__(self, other):
return Vector3(self._x * other, self._y * other, self._z * other)
# 定义向量除法
def __truediv__(self, other):
return Vector3(self._x / other, self._y / other, self._z / other)
# 定义向量长度计算
@property
def length(self):
return (self._x ** 2 + self._y ** 2 + self._z ** 2) ** 0.5
# 定义向量长度设置(可读、可写、可删除)
@length.setter
def length(self, value):
ratio = value / self.length
self._x *= ratio
self._y *= ratio
self._z *= ratio
@length.deleter
def length(self):
self._x = 0
self._y = 0
self._z = 0
def __str__(self):
return f"({self._x}, {self._y}, {self._z})"
```
有了这个类的实现,我们可以进行向量的加减乘除运算,以及获取和设置向量的长度。下面是一些使用示例:
```python
>>> v1 = Vector3(1, 2, 3)
>>> v2 = Vector3(4, 5, 6)
>>> v3 = v1 + v2
>>> print(v3)
(5, 7, 9)
>>> v4 = v3 - v2
>>> print(v4)
(1, 2, 3)
>>> v5 = v4 * 2
>>> print(v5)
(2, 4, 6)
>>> v6 = v5 / 2
>>> print(v6)
(1.0, 2.0, 3.0)
>>> print(v6.length)
3.7416573867739413
>>> v6.length = 2
>>> print(v6)
(0.5345224838248488, 1.0690449676496976, 1.6035674514745464)
>>> del v6.length
>>> print(v6)
(0, 0, 0)
```
希望这个实现能够满足你的需求!