我试图理解为什么我不能在 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 操作它。)