小编典典

我不了解python中的__iter__,谁可以给我一个好的代码示例

python

我的代码运行错误

class a(object):
    def __iter(self):
        return 33
b={'a':'aaa','b':'bbb'}
c=a()
print b.itervalues()
print c.itervalues()

请尝试使用代码而不是文本,因为我的英语不是很好,谢谢


阅读 143

收藏
2021-01-20

共1个答案

小编典典

一种。拼写正确: 不可以

   def __iter(self):

但:

   def __iter__(self):

__之前 之后iter

b。使身体正确: 不* 正确 *

return 33

但:

yield 33

或返回iter([33])

如果您return从中获得一个值__iter__,则返回一个迭代器(如中的 iterablereturn [33]几乎一样好,但不完全是…);否则,将yield1+个值组合__iter__成一个生成器函数(因此它本质上返回一个生成器迭代器)。

C。正确地说:

a().itervalues()

但是,例如:

for x in a(): print x

要么

print list(a())

itervalues是命令的一种方法,与无关__iter__

如果您解决了所有三个(!)错误,则代码会更好地工作;-)。

2021-01-20