请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

+=和extend的思考

老师你好,有个问题,就是说+=其内部实现的是__iadd__这个魔法方法,而这个方法实际调用的是extend方法,那假设我用tuple(这里不用list了),为什么用+=可以成功添加,而直接使用extend就会报错呢提示没有tuple没有这个extend方法,是python解释器会把tuple转成list吗?

a=(1,2)
b=(3,4)
# a+=b
a.extend(b)

正在回答 回答被采纳积分+3

1回答

bobby 2018-04-12 10:47:24

list和set中都实现了___iadd__方法,对list来说是在___iadd__中调用了extend,这只能说明list中是有extend方法的, 但是这不能证明set的___iadd__方法中也是调用了extend方法,也就证明不了set有extend方法

0 回复 有任何疑惑可以回复我~
  • 提问者 xmzls #1
    我在内建的class list():里看了下,里面的__iadd__都是pass,而tuple,set的这些类定义的地方,甚至没有实现__iadd__这个方法,请问我该在哪里查看呢
    回复 有任何疑惑可以回复我~ 2018-04-12 12:46:16
  • bobby 回复 提问者 xmzls #2
    这个是用c语言实现的想要搞清楚这个需要去了解c源码
    回复 有任何疑惑可以回复我~ 2018-04-16 09:30:17
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号