请稍等 ...
×

采纳答案成功!

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

代码有点疑问,谢谢

def __str__(self):
    return '({})'.format(', '.join(str(e) for e in self._value))

def str(self):
return ‘({})’.format(’, '.join(str(e) for e in self))

两种写法有区别吗?我看结果都是一样的。


def iter(self):
return self._value.iter() 这个没有时,下面这个写法也不会报错
return Vector([a + b for a,b in zip(self,other)])

正在回答

插入代码

1回答

liuyubobobo 2020-02-20 01:57:44

1

一个类有 __iter__ 或者 __getitem__ 的定义,都会让这个类可迭代。因此 Vector 本身可迭代,使用 str(e) for e in self 是可以的。

可以试试看,这样写如果删除掉 __iter__ 和 __getitem__ 的定义就会报错。


2

同上,__getitem__ 也会让一个类可迭代。


可以参考 python 官方文档 PEP0234:https://www.python.org/dev/peps/pep-0234/


划重点:

The two methods correspond to two distinct protocols:

An object can be iterated over with for if it implements __iter__() or __getitem__().

An object can function as an iterator if it implements next().


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕标9237089 #1
    好的,谢谢
    回复 有任何疑惑可以回复我~ 2020-02-20 13:12:28
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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