1

我有一个简单的函数,当我在我的 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

where command 是一个字节的 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(),但我不知道为什么这似乎并不总是正确的。知道这里发生了什么吗?

4

2 回答 2

2

像这样调用方法:

stage.calculateChecksum(testarray)

请注意,您不必显式传递参数stageself当您在对象上调用方法时会隐式传递(stage在本例中。)

于 2012-12-28T01:40:12.750 回答
0

您定义def calculateChecksum(self, command):到一个类中,当您调用一个类方法时,您不需要添加self变量。Python 为您添加了它。

于 2012-12-28T02:41:27.217 回答