2015-08-27 53 views
0

最近我遇到了下面的代碼在pythonpython內部存在什麼?

for var in self: 
    self.some_list.append(var) 

我知之甚少,但自己上面的代碼真的讓我覺得這樣可以部分解釋一個我是什麼一段代碼是什麼意思?

+0

你能提供更多的上下文嗎?它是什麼讓你思考? – ASGM

回答

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

1

標識符self在python中沒有特別的意義,它可以容納你放入它的任何東西(通過賦值或函數的參數)。

被調用的唯一的實例方法會將該方法被調用的對象作爲第一個參數,它通常是(通過約定)調用self