最近我在python
中遇到了以下代码for var in self:
self.some_list.append(var)
我对自我知之甚少,但上面的代码真的让我这么想,有人可以解释一下这段代码是什么意思吗?
答案 0 :(得分:0)
当您使用for ... in ...
语法迭代某个对象时,您实际上正在调用它的__iter__
方法。例如,
class Iterable(object):
def __init__(self, *args):
self.items = args
def dump(self):
for val in self:
print 'I have %s!' % str(val)
def __iter__(self):
for val in self.items:
yield val
i = Iterable(1, 2, 3, 'foo', 'bar')
i.dump()
在dump
方法中,for val in self
会对由self.values
实施的__iter__
列表进行迭代。如果你放弃__iter__
方法,Python就不知道该怎么做了,你会得到一个TypeError(' Iterable'对象不可迭代)。