2

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 を使用して操作できます)。

4

2 に答える 2