次のコードは、"good" のみを出力します。ジェネレータ関数が実行されないのはなぜですか? pdb で、「handlers1」を実行した後、スクリプトが f1 の定義を含む行に到達するが、関数内に入らないことに気付きました。逆に、「GeneratorExit: None」が返されます。
class foo:
def f0(self, s):
print s
def f1(self, s):
print "not " + s
yield 1
def run(self):
handlers={0 : self.f0, 1 : self.f1}
handlers[0]('good')
handlers[1]('good')
bar = foo()
bar.run()
なぜこれが起こるのですか?同様の動的な方法でジェネレーター関数を呼び出すことは可能ですか?