2014-01-19 2 views
4

Я пытаюсь сделать следующее:functools.partial и генераторы

import functools 

class TestClass(): 
    def method(self, n): 
     for i in xrange(n): 
      yield i 

# This works 
for x in TestClass().method(10): 
    print x 

# This gets a TypeError: functools.partial object not iterable 
for x in functools.partial(TestClass().method, 10): 
    print x 

Что плохого?

ответ

6

functools.partial создает object, который ведет себя как новая функция, которая имитирует старую функцию с некоторыми замороженными аргументами. Таким образом, вы должны называть эту новую функцию для получения того же выхода:

for x in functools.partial(TestClass().method, 10)(): 
    print x 
Смежные вопросы