【发布时间】:2010-10-18 05:17:29
【问题描述】:
我知道覆盖 plus 的 __add__ 方法,但是当我使用它覆盖 += 时,我遇到了两个问题之一:
(1) 如果__add__ 自身发生变异,那么
z = x + y
当我真的不希望 x 在那里发生变异时,将变异 x。
(2)如果__add__返回一个新对象,那么
tmp = z
z += x
z += y
tmp += w
return z
在z += x 执行后,z 和 tmp 指向不同的对象,所以会返回不带 w 的东西。
我可以制作某种.append() 方法,但如果可能的话,我更愿意重载+=。
【问题讨论】:
-
@tzot 在某种程度上,你在看 F'ing M。;-)
-
您是否暗示 Josh 是 Python 的手动编写者之一?抱歉,我似乎不明白你的意思,@BobStein-VisiBone。
-
@tzot 我的意思是 Stack Overflow 是,在很大程度上,Python 手册。这个页面比the one at docs.python.org 更容易找到。特别是如果您还不知道要搜索
__iadd__或“就地”添加术语。
标签: python operator-overloading