有没有办法在Python中重载+=? [重复]

问题描述 投票:0回答:1

我知道

__add__
方法可以覆盖 plus,但是当我用它来覆盖 += 时,我最终遇到了两个问题之一:

  1. 如果

    __add__
    变异自身,那么

    z = x + y
    

    当我真的不希望 x 在那里发生突变时,将会突变 x。

  2. if

    __add__
    返回一个新对象,则

    tmp = z
    z += x
    z += y
    tmp += w
    return z
    

    将返回不带 w 的内容,因为执行

    z += x
    后 z 和 tmp 指向不同的对象。

我可以制作某种

.append()
方法,但如果可能的话,我更愿意重载
+=

python operator-overloading
1个回答
108
投票

是的。只需重写对象的

__iadd__
方法,该方法采用与
add
相同的参数。您可以在此处找到更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.