请稍等 ...
×

采纳答案成功!

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

老师你好,关于+的问题

请问为什么在main_vector里vec = Vector([5,2]), vec1 = Vector([1,2]), print(__add__(vec, vec2))是不对的呢

正在回答

1回答

liuyubobobo 2018-08-15 02:21:01

因为 __add__不是一个函数,而是定义在Vector下的一个对象方法,需要基于对象调用。


这样是正确的。

print(vec.__add__(vec2))


在这点上,请仔细体会你已经学习过的面向对象语言和Python语言的异同。其实在面向对象的基本概念上是一致的,只不过语法有区别:)


但是__add__作为一个魔法方法,它的意义就是重载加号,所以不会有人用上面的写法。下面的写法是标准的:

print(vec + vec2)


加油!

0 回复 有任何疑惑可以回复我~
  • 提问者 宝慕林5414044 #1
    谢谢老师,但是我还有个问题,要怎样才能知道+重载了add,看手册可以查出来吗?
    回复 有任何疑惑可以回复我~ 2018-08-15 09:26:14
  • liuyubobobo 回复 提问者 宝慕林5414044 #2
    是的哦。这是Python语法的一部分哦。这类方法称为魔法方法,通常介绍Python语法的书籍肯定会提及,也可以在网上搜索“魔法方法”进行学习。这类方法的名称如此奇怪,前后使用两个下划线,就是为了提醒你:注意,注意,这是一个特殊的,被Python语法占用的方法:)
    回复 有任何疑惑可以回复我~ 2018-08-15 09:34:25
  • 提问者 宝慕林5414044 回复 liuyubobobo #3
    原来如此,了解了,谢谢老师及时的回复。
    回复 有任何疑惑可以回复我~ 2018-08-15 09:39:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信