Pythonのインクリメント

なぜPythonには「i++」ってできないの?

他の多くの言語ではインクリメント、デクリメントは「i++」「i--」とかってすればいいのに〜

>>> i += 1
>>> i -= 1

何だか面倒だ。これはPythonが完全なオブジェクト指向の言語だからなの?と言う事で、

>>> type(1)
<type 'int'>
>>> dir(1)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delat
tr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getat
tribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '_
_int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__'
, '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__
', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr
__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow_
_', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__seta
ttr__', '__str__', '__sub__', '__truediv__', '__xor__']

おおお〜凄いね〜数値にもちゃんと属性があるじゃないですか〜「+」ってのは「__add__」が対応しているのかな、こういったのをフックメソッドと言うと聞いた事がある。うまいことやれば「++」に対応した「__inc__」なんてのも作れるんでないの?残念ながら今の私ではわからんけどね。その内きっと・・・

Javaなんかは、完全なるオブジェクト指向じゃないから数値自身は自分が何者かを知らない。だから数値をラッピングするクラスがあるんじゃなかったけ?いや忘れたけどね。

>>> callable(getattr(1, "__add__"))
True
>>> 1.__add__(1)
  File "<stdin>", line 1
    1.__add__(1)
            ^
SyntaxError: invalid syntax

残念。できると思ったんだが無理なんだ。なんで?まあ〜のんびりやろう。