我不了解python中的__iter__,谁可以给我一个好的代码示例
问题内容:
我的代码运行错误
class a(object):
def __iter(self):
return 33
b={'a':'aaa','b':'bbb'}
c=a()
print b.itervalues()
print c.itervalues()
请尝试使用代码而不是文本,因为我的英语不是很好,谢谢
问题答案:
一种。拼写正确: 不可以
def __iter(self):
但:
def __iter__(self):
与__
之前 和 之后iter
。
b。使身体正确: 不* 正确 *
return 33
但:
yield 33
或返回iter([33])
如果您return
从中获得一个值__iter__
,则返回一个迭代器(如中的 iterablereturn [33]
几乎一样好,但不完全是…);否则,将yield
1+个值组合__iter__
成一个生成器函数(因此它本质上返回一个生成器迭代器)。
C。正确地说: 不
a().itervalues()
但是,例如:
for x in a(): print x
要么
print list(a())
itervalues
是命令的一种方法,与无关__iter__
。
如果您解决了所有三个(!)错误,则代码会更好地工作;-)。