Python Infix Hack如何工作?

时间:2017-12-06 13:17:50

标签: python operator-overloading operators

http://code.activestate.com/recipes/384122-infix-operators/ 本文介绍了一种使用python中的函数编程创建自定义中缀运算符的方法。但是我无法理解这个黑客是如何运作的。我理解运算符的右侧版本以及双下划线方法的工作原理,但我不明白为什么这个hack有效。

提前致谢 新星

1 个答案:

答案 0 :(得分:1)

2 |x| 4来电x.__ror__(2).__or__(4)。现在x.__ror__(2)返回Infix(lambda arg, self=self, other=other: self.function(other, arg)),在这种情况下,self.functionlambda x,y: x*yother2。所以我们得到:Infix(lambda arg, self=x, other=2: other * arg)。在此,我们致电.__or__(4),返回self.function(other),其中other4。所以:

(lambda arg, self=x, other=2: other * arg)(4)
   ===
arg = 4
self = x
other = 2
other * arg
   ===
4 * 2
   ===
8

所以我们得到8。