9
私はクラスを定義し、チルダ演算子を上書きしようとした:単項演算子をPythonでバイナリ演算子でオーバーライドする可能性はありますか?
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
我々はバイナリ1とチルダ演算子を置き換えることができますので、我々は次のように操作を行うことができますf ~ g
構文エラーを発生させません。
いいえ、ありません。 –
Python自体を変更しないで、いいえ(あなたが望むならそうすることもできますが - 例えばhttp://stackoverflow.com/questions/214881/can-you-add-new-statements-to-pythons-syntax in introduction )。 – jonrsharpe
@jonrsharpe:実行時に*変更されたオペランドの数はどうでしょうか?あなたの唯一のオプションは、 '〜'演算子の意味を完全に変更することです。実行時に1つまたは2つのオペランドを選択することはできません。 –