self オブジェクトのクラス内で iadd (+=) を使用できない理由を理解しようとしています。
たとえば、iadd を使用するクラスと、iadd (addA) を使用する関数を定義するとします。
class A(object):
def __init__(self, n):
self.n = n
def __iadd__(self, other):
return A(self.n+other.n)
def addA(self, other):
self+=other
a1 = A(9)
a2 = A(8)
addA 関数を使用すると、a1 は影響を受けないようです。
a1.addA(a2)
print a1.n
>>> 9
ただし、iadd を通常どおり使用すると、問題なく動作します。
a1+=a2
print a1.n
>>> 17
クラス定義内で iadd を使用する方法を教えてください。
(これが関係ないことを願っていますが、maya.OpenMaya.MMatrix オブジェクトのラッパーを作成しようとしているので、これを尋ねています。任意の変換を適用する関数を追加したいと思います。iadd を使用する必要があります。親クラスに格納されているデータに直接アクセスできないため、クラス定義内の関数を使用しますが、iadd を使用して操作できます)。