压倒一切的连锁经营?贪婪

时间:2019-12-25 21:07:04

标签: python overriding operation

是否有一种方法可以覆盖/实现链式操作。 我的意思是 ?让我们乘以它处理a * b 就我而言,我使用__mul__对两个操作数进行二进制或运算,然后应用破坏性运算,这意味着3个操作数的结果是不同的。

这是伪代码

class MyClass:

def fun(self, lst):
   for i in lst : x |= i
   ... destructive ops ...
   return x

def __mul__(self, rhs): return self.fun([self,rhs])

现在这两个是等效的:

 a * b   <==>  fun([a,b])

但不是:

 a * b * c   <=/=>  fun([a,b,c]) 

因为乘法是分两步完成的,而函数调用是一步。

有没有办法使乘法贪婪,以便如果重复可以收集相同的运算? “ +”也一样吗?

1 个答案:

答案 0 :(得分:0)

破坏性操作会使代码难以推理。尝试制定一种纯粹的功能性解决方案,而不是四处寻找运算符优先级。