最近,我在python中遇到了以下代码
for var in self:
self.some_list.append(var)我对自我知之甚少,但上面的代码确实让我觉得,有人能解释一下这段代码意味着什么吗?
发布于 2015-08-27 07:11:20
当您使用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迭代由__iter__实现的self.values列表。如果删除__iter__方法,Python将不知道该做什么,您将得到一个TypeError ('Iterable‘对象不可迭代)。
发布于 2015-08-27 07:00:16
在python中,标识符self没有特殊的含义,它可以保存您放入的任何内容(通过赋值或函数的参数)。
唯一的问题是,实例方法在调用时会将调用该方法的对象作为第一个参数,通常(按照惯例)称为self。
https://stackoverflow.com/questions/32242642
复制相似问题