まず、Pythonでは、通常の演算子 +, - += は、以下のような特殊メソッドで処理されている。(らしい)
それらを、オーバーライドするから、return self が必要なのだろう。 iaddは、自分自身を戻す。なんかイメージはできるけど、具体的に説明できない。 ちょっとの間は、「おまじない」として割り切ろう。
class Klass(object):
# 「+」演算子
def __add__(self, *args):
print '__add__'
print args
# 「-」演算子
def __del__(self, *args):
print '__del__'
print args
# 「+=」演算子
def __iadd__(self, *args):
print '__iadd__'
print args
return self
詳しくは、ここに書いてあります。