什么在python自我内部?

时间:2015-08-27 06:57:58

标签: python

最近我在python

中遇到了以下代码
for var in self: 
    self.some_list.append(var)

我对自我知之甚少,但上面的代码真的让我这么想,有人可以解释一下这段代码是什么意思吗?

1 个答案:

答案 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'对象不可迭代)。