単項演算子もオーバーロードできるようだ あと演算子扱いじゃないけどオーバーロードできるもの

昨日は単項演算子はできないと思っていたけど単に『初めてのPython』の表に載っていないだけだった。
実際は+と-と~とabs()ができる。abs()は関数な気もするけど+や-と似たようなものだからいいか。
それでもnotはやっぱりオーバーロードできなさそう。これは演算子じゃないみたい。
.(ピリオド)も__getattr__()でオーバーロードできるので面白そうなことができるかと思ったんだけど、良く考えたらRubyのmethod_missing()と似たようなものだった。
添え字演算子ももちろんオーバーロードできる。Rubyでもできるので詳細は省略。


変わったところでは+演算子の右辺値の時に使われる__radd__()みたいなのは斬新かも。自作オブジェクト同士なら普通の__add__()だけで何も困らないけど、整数と足し算するときなどは左右どちらにあっても対応可能になるわけだ。もちろん+以外もちゃんとある。C++だとメンバ関数以外でもoperator関数が書けたからこういうのはいらなかったけど。
C++といえば、カンマ演算子は残念ながらない。カンマはあるけど演算子じゃないみたいなので。