Jythonインタープリターに手動で入力すると機能する単純な関数がありますが、コードを関数として実行しようとするとlen()の呼び出しが失敗します。
def calculateChecksum(self, command):
sum = 0
for b in range(len(command)):
sum = sum + command[b-1]
mod = sum % 64
checkbyte = mod & (0xFF)
checksum = checkbyte | 0x80
ここで、コマンドはバイトのjarray.arrayです(組み込みの配列型を使用しないのはなぜですか?質問します:重要ですか?jarray.arrayは他のすべてで機能し、場合によっては明らかに機能します。以下を参照してください)
>>> testarray
array([55, 57, 51], byte)
>>> len(testarray)
3
>>> stage.calculateChecksum(stage, testarray)
Traceback (innermost last):
File "<console>", line 1, in ?
File "....py", line 75, in calculateChecksum
AttributeError: __len__
したがって、この配列はlen()を実装していると言っても差し支えないと思いますが、なぜそれが常に正しいとは限らないのかわかりません。ここで何が起こっているのか分かりますか?