質問: どのようにしてオブジェクトを出力すると、str()とrepr()のどちらとも異なる出力が得られますか? 私はインタプリタでいくつかのコードをテストしていましたが、 `sqlite3.Row` クラスを使用します。 私の理解は、 `print obj` は常に `print str(obj)`と同じ結果を得て、インタプリタに `obj` 結果は `print repr(obj)`となりますが、これは `sqlite3.Row` の場合とは異なります。 ``` >>> print row # the row object prints like a tuple (u'string',) >>> print str(row) # why wouldn't this match the output from above? >>> row # usually this would be the repr for an object (u'string',) >>> print repr(row) # but repr(row) is something different as well! ``` 私は `sqlite3.Row` は `tuple` のサブクラスでなければならないと思いますが、この現象を引き起こす可能性のあるシーンの裏側で何が起こっているのかはまだ分かりません。誰もこれを説明できますか? これはPython 2.5.1でテストされましたが、動作が他のPythonバージョンと同じかどうかは不明です。 これが重要かどうかは不明ですが、 `row_factory` 私の `Connection` の属性は `sqlite3.Row` に設定されていました。
回答: ``` s = str(tuple(row)) ``` 元のタプル文字列表現が必要な場合の回避策です。 たとえば、次のように簡単に行を記録したい場合に便利です。 ``` logging.debug(tuple(user_row)) ``` 行は反復可能であるため、動作します。