问题描述
我的代码运行错误
class a(object):
def __iter(self):
return 33
b={'a':'aaa','b':'bbb'}
c=a()
print b.itervalues()
print c.itervalues()
请尝试使用代码而不是文本,因为我的英语不是很好,谢谢
Please try to use the code, rather than text, because my English is not very good, thank you
推荐答案
a。拼写正确:不
def __iter(self):
但是:
def __iter__(self):
__ 之前和 iter
之后。
b。使身体正确:不
return 33
但是:
yield 33
或
返回iter([33])
or return iter([33])
如果从
值,则返回迭代器( iterable ,如在 __ iter __
返回 return [33]
中,几乎一样好但不完全......);或者, yield
1+值,使 __ iter __
进入生成器函数(因此它本质上返回生成器迭代器)。
If you return
a value from __iter__
, return an iterator (an iterable, as in return [33]
, is almost as good but not quite...); or else, yield
1+ values, making __iter__
into a generator function (so it intrinsically returns a generator iterator).
c。称之为正确:不
a().itervalues()
但是,例如:
for x in a(): print x
或
print list(a())
itervalues
是一种dict方法,与 __ iter __
无关。
itervalues
is a method of dict, and has nothing to do with __iter__
.
如果你修复了所有三个(!)错误,代码效果会更好; - )。
If you fix all three (!) mistakes, the code works better;-).
这篇关于我不知道python中的__iter__,谁能给我一个很好的代码示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!