0

次のプログラムを参照してください

class MyIterator:
    cur_word = ''
    def parse(self):
        data = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
        for index in range(1,3):
            (word, num) = data[index]
            cur_word = word
            yield self.unique_str(num)

    def unique_str(self, num):
        data = ['a', 'b']
        for d in data:
            yield "%s-%d-%s" % (self.cur_word, num, d)


miter = MyIterator()
parse = miter.parse()
for ustrs in parse:
    for ustr in ustrs:
        print ustr

このコードの出力は

-2-a
-2-b
-3-a
-3-b

でも私はそれをしたい

two-2-a
two-2-b
three-3-a
three-3-b

はい、実行できることはわかっていますyield self.unique_str(word, num)。しかし、私が使用しているコードは許可されていません。そこで、インスタンスメンバーを使用してデータを渡しました。

4

1 に答える 1

2

MyIterator.parseインスタンスの現在の単語を変更しません。

これは機能します:

class MyIterator:
    cur_word = ''
    def parse(self):
        data = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
        for index in range(1,3):
            (word, num) = data[index]
            self.cur_word = word
            yield self.unique_str(num)

    def unique_str(self, num):
        data = ['a', 'b']
        for d in data:
            yield "%s-%d-%s" % (self.cur_word, num, d)


miter = MyIterator()
parse = miter.parse()
for ustrs in parse:
    for ustr in ustrs:
        print ustr

( inに変更cur_word = wordしただけです)self.cur_word = wordparse

于 2013-02-01T18:40:24.067 に答える