深い私のコードの中で入れ子になっている場合は、内部のクラスメソッドのために、特定のインデックス値を特定のリストの長さと比較して、そのインデックスにアクセスできることを検証します。 index_value
は(どこか検証)少なくともゼロで、明確にするため数値の比較 - Pythonのバグ?
if t.index_value < len(work_list):
... do stuff ...
else:
... print some error ...
:コードは、そのようなものになります。私の驚いたことに、index_value
データが有効であることは分かっていますが、コードは "else:"節に移動し続けます。
>> Checking whether 3<4
>> 3
>> 4
>> False
誰も私がここで何が起こっているか理解するのを助けることができる:出力が続き
print('Checking whether '+str(t.index_value)+"<"+str(len(work_list)))
x = t.index_value
y = len(work_list)
print(x)
print(y)
print(x<y)
if t.index_value < len(work_list):
... do stuff ...
else:
... print some error ...
:私はいくつかのアドホックデバッグコードを追加しましたか?
さらに明確化:
- work_listローカル変数メソッド内でインスタンス化
- tはメソッド内でインスタンス化され、クラスのインスタンスである(
t = SomeClass()
)
更新:ザ・問題は、t.index_value
のタイプがintではなくUNICODEであることでした。その理由は、テキストファイルからtの内容を逆シリアル化したところです。この場合、index_valueの値は1桁の文字で表されます。テキストから抽出した後、即座にそれをindex_value
に割り当て、int()を渡さずに済んだら、問題を解決しました。
私は同じ問題を抱えている人々がこのタイトルを使って見つけることができるので、明らかに私のバグでありPythonのものではないにもかかわらず、「論争の的な」タイトルを維持することに決めました。
最初のprint文の下に行を追加できますか?試してみてください(タイプ(t.index_value)) – Wesley