我在Python中创建一个模块来存储和操作数据作为四元数(由一个真实元素 w 和一个向量元素 v = xi + yj + zk 。创建用于存储数据的四元数类很简单:
class quaternion_c:
def __init__(self, w, x, y, z):
self.w = w
self.x = x
self.y = y
self.z = z
...
我想要做的是,与使用自定义方法在quaternion_c
上执行算术相结合,我希望能够在实例本身上使用基本运算符,就像NumPy Arrays使用它们一样。简而言之,给出了两个示例quaternion_c
对象:
qtn0 = quaternion_c(0, 1, 2, 3)
qtn1 = quaternion_c(100, 99, 98, 97)
我希望qtn0 + qtn1
产生与以下相同的结果:
def add(qtn0, qtn1):
w_01 = qtn0.w + qtn1.w
x_01 = qtn0.x + qtn1.x
y_01 = qtn0.y + qtn1.y
z_01 = qtn0.z + qtn1.z
return quaternion_c(w_01, x_01, y_01, z_01)
add(qtn0, qtn1)
我还想为其他运营商指定类似的更改,例如*
的{{1}}和mult()
的{{1}}。这可行吗?是否可以更改基本运算符处理特定类的方式?