私はクラスのジェネレーター関数とプライベート関数を扱っていました。不思議なんだけど
- __someFuncで(私の1つのケースでは偶然でした)yieldを実行すると、この関数が__someGenerator内から呼び出されていないように見えるのはなぜですか。また、言語のこれらの側面を参照するときに使用したい用語は何ですか?
- Pythonインタープリターはそのようなインスタンスについて警告できますか?
以下は私のシナリオのスニペットの例です。
class someClass():
def __init__(self):
pass
#Copy and paste mistake where yield ended up in a regular function
def __someFunc(self):
print "hello"
#yield True #if yielding in this function it isn't called
def __someGenerator (self):
for i in range(0, 10):
self.__someFunc()
yield True
yield False
def someMethod(self):
func = self.__someGenerator()
while func.next():
print "next"
sc = someClass()
sc.someMethod()
私はこれに夢中になり、関数が呼び出されなかった理由を理解しようと時間を費やしました。私はついに、自分がやりたくない機能を譲っていることに気づきました。