我尝试定义一个类并覆盖代字号运算符:
class foo:
def __invert__(self, other)
return 1232 # a random number , just as test
然后将其称为:
>>> f = foo()
>>> g = foo()
>>> f ~ g
File "<input>", line 1
f ~ g
^
SyntaxError: invalid syntax
我们可以用二进制运算符替换波浪符运算符,这样我们就可以执行f ~ g
之类的操作而不会引发语法错误。
答案 0 :(得分:11)
不,你不能这样做,而不是从根本上改变Python编译字节码的方式。所有表达式首先解析到一个抽象语法树中,然后从中编译成字节码,并且它处于解析阶段,操作数和运算符被分组。
当字节码运行时,您不能再决定接受两个操作数。