私はイテレータを作成しました。私はレシピの成分を繰り返し、ビーガンの人がそれをできるかどうかをチェックしようとしています。クラス属性としてリストを渡すことができません
class Vegan:
NONE_VEGAN_INGREDIENT = ['egg', 'milk', 'honey', 'butter']
def __init__(self, *args):
self.ingredient_list = (args)
self.index = -1
def __iter__(self):
return self
def __next__(self):
if self.index == len(self.ingredient_list):
raise StopIteration
for ingredient in self.ingredient_list:
if ingredient in Vegan.NONE_VEGAN_INGREDIENT:
self.index += 1
return ('{} is a vegan ingredient'.format(ingredient[self.index]))
else:
self.index += 1
return ('{} is NOT a vegan ingredient'.format(ingredient[self.index]))
iterable = Vegan('tomato', 'banana', 'asd', 'egg', 'tomato')
iterator = iter(iterable)
while True:
try:
print(next(iterator))
except StopIteration:
break
あなたが見ることができるように、私はリストであるべき、*引数を渡すんだけど、私はこれを実行しようとするたびに、それは最初の単語を反復処理し、ワード「トマト」の文字をチェックします。私は反復子が成分を通過するようにし、何かがNONE_VEGAN_INGREDIENTリストにない場合は、そのままコードとして印刷します。私はどのようにリストを渡すことができますか?
はビーガン(..)でVのための 'シンプルされていない場合:印刷(V) 'あなたの最後の行に相当する? – polku
なぜiterを呼び出しているのですか?インスタンスを反復処理するだけではどうですか? –