如何将“x+=5”(x是自定义类)添加到x的属性中?

2024-04-19 00:09:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一节课:

class C(object):
    a = 5
    def __iadd__(self, other):
        self.a += other

我希望能够做到:

b = C()
b += 7

和b相同,但是在b.a中加了7。但是,如果我真的运行这个,它会把b变成一个非类型的对象。我想这是因为C.。\u iadd\u没有返回任何东西。你知道吗

我是否必须让C.。\u iadd\u返回一份带有self.a的self副本?有没有一种方法可以在不复制整个对象并返回它的情况下实现这种添加?你知道吗


Tags: 对象方法self类型objectdef副本情况
1条回答
网友
1楼 · 发布于 2024-04-19 00:09:15

您忘记从__iadd__方法返回self

def __iadd__(self, other):
    self.a += other
    return self

^{} documentation

These methods should attempt to do the operation in-place (modifying self) and return the result (which could be, but does not have to be, self).

如果没有显式的return语句,函数返回None作为默认值,因此b += 7生成None,这是赋值的结果。你知道吗

相关问题 更多 >