1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】ブール値を返そうとすると TypeError("'bool' object is not iterable",) が発生する。

2021-12-30 11:13:55

質問

booleanを返すメソッドを書きたい。フロントエンドから直接メソッドを呼び出すことができないので、その関数の結果を再び返す必要があります。

コードは以下の通りです。

# this uses bottle py framework and should return a value to the html front-end
@get('/create/additive/<name>')
def createAdditive(name):
    return pump.createAdditive(name)



 def createAdditive(self, name):
        additiveInsertQuery = """ INSERT INTO additives
                                  SET         name = '""" + name + """'"""
        try:
            self.cursor.execute(additiveInsertQuery)
            self.db.commit()
            return True
        except:
            self.db.rollback()
            return False

実行すると、エラーが発生します。

TypeError("'bool' object is not iterable",)

私はbool値を返すだけで、"iterate"を試みていないので、このエラーは全く出ません。

booleanやintの代わりに文字列を返すと、期待通りに動作します。 

トレースバック

Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\bottle.py", line 821, in _cast
    out = iter(out)
TypeError: 'bool' object is not iterable

解決方法は?

トレースバックを見てください。

Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\bottle.py", line 821, in _cast
    out = iter(out)
TypeError: 'bool' object is not iterable

あなたのコードは値を反復していませんが、それを受け取るコードは反復しています。

解決策は、イテラブルを返すことです。boolを文字列に変換することをお勧めします ( str(False) ) またはタプルで囲む ( (False,) ).

トレースバックは必ず読みましょう。正しいですし、役に立ちます。