|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> class Nint(int):
def __radd__(self, other):
print("__radd__ 被调用了!")
return int.__add__(self, other)
>>> a = Nint(5)
>>> b = Nint(3)
>>> a + b
8
>>> 1 + b
__radd__ 被调用了!
4
我想问一下这里在执行1 + b 的时候,逻辑是不是因为1这个整数里面的方法只有__add__,同时又因为b在这里是个对象,所以返回的是notimplemented,接着就执行了b对象里的__radd__方法?还有就是他这个最后return int.__add__(self,other)是什么意思呀,这里的self此时不是b嘛?,那b 作为对象为啥int类里的__add__方法对他有用了,并且返回了4?
本帖最后由 lxping 于 2022-12-4 17:22 编辑
1.__add__(b),这个是语法错误,python认为1.xxx表示一个浮点数,所以后面写的__add__不符合浮点数的格式要求
但是(1)是可以的 - (1).__add__(b)
- 4
- (1) + b
- __radd__ 被调用了!
- 4
复制代码
|
|