我有一个简单的函数,当我手动在我的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()是安全的,但我不知道为什么这似乎并不总是如此。知道这里发生了什么吗?
答案 0 :(得分:2)
调用这样的方法:
stage.calculateChecksum(testarray)
请注意,您不必为stage
参数显式传递self
,当您在对象上调用方法时会隐式传递(stage
。)< / p>
答案 1 :(得分:0)
您将def calculateChecksum(self, command):
定义为一个类,当您调用类方法时,您不需要添加self
变量。 Python为你添加它。