Python魔法方法调用的问题

为什么在定义魔法方法当中使用了该魔法方法对应的操作,不会进入递归?比如下面的代码中,在调用"+"时,内部魔法方法为什么不会调用自身?

class A:
    def __init__(self,a):
        self.e=a
    def __add__(self):
        print('被调用了')
        return self.e+2
a=A(2)
a+1
被调用了
4

根据你的代码,看起来似乎你的 add 魔法方法定义有误。add 应该接受一个参数(除 self 外),这个参数是你想要与该对象相加的值。你的 add 方法没有接收这个参数,这可能会导致错误。下面是一个正确的示例:

class A:
    def __init__(self, a):
        self.e = a

    def __add__(self, other):
        print('被调用了')
        return self.e + other

a = A(2)
print(a + 1)

在这个例子中,当你执行 a + 1 时,Python 会调用 a.__add__(1)。因此,__add__ 方法需要一个额外的参数 other,以便知道需要与什么相加。当 a.__add__(1) 被调用时,Python 知道 self.e + other 是在调用基础的整数加法,所以并不会递归地再次调用 a.__add__(1)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^