len(数组)从解释器工作,在函数内调用时失败

时间:2012-12-28 01:37:37

标签: python jython

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

其中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()是安全的,但我不知道为什么这似乎并不总是如此。知道这里发生了什么吗?

2 个答案:

答案 0 :(得分:2)

调用这样的方法:

stage.calculateChecksum(testarray)

请注意,您不必为stage参数显式传递self,当您在对象上调用方法时会隐式传递(stage。)< / p>

答案 1 :(得分:0)

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