Python 2.7 - 为特定类定义基本运算符

时间:2016-08-31 20:21:50

标签: python operators

我在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}}。这可行吗?是否可以更改基本运算符处理特定类的方式?

0 个答案:

没有答案