是否有一种方法可以覆盖/实现链式操作。
我的意思是 ?让我们乘以它处理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])
因为乘法是分两步完成的,而函数调用是一步。
有没有办法使乘法贪婪,以便如果重复可以收集相同的运算? “ +”也一样吗?
答案 0 :(得分:0)
破坏性操作会使代码难以推理。尝试制定一种纯粹的功能性解决方案,而不是四处寻找运算符优先级。