Python - 在生成器中没有新的对象创建

时间:2015-04-28 13:03:47

标签: python generator

在具有行为的runnable codesnippet下面,我无法解释: name_generator 应在每次迭代中创建一个新的LetterMan对象,附加一个任意字母并将其生成。

在每次迭代中,一个字母以某种方式追加到所谓的新对象。脚本的结果是:

class LetterMan(object):

    def __init__(self, name, letterlist=[]):
        self.letterlist = letterlist
        self.name = name

    def add_letter(self, letter):
        self.letterlist.append(letter)


def name_generator():
    for name in ["Andrew", "Bryan", "Casey"]:
        l = LetterMan(name)
        l.add_letter(name[-1])
        yield l


if __name__ == '__main__':
    n = name_generator()
    for lman in n:
        print lman.name, lman.letterlist



# Andrew ['w'] 
# Bryan ['w', 'n'] 
# Casey ['w', 'n', 'y']

我期待:

# Andrew ['w']
# Bryan ['n']
# Casey ['y']

这是某种优化吗? 为什么每次迭代都没有创建新对象? 我如何达到预期的效果?

我已经尝试在每个yield之后删除对象而没有结果

我在ubuntu上使用python 2.7.3

0 个答案:

没有答案