我有一门课看起来是这样的:
class Sha3_224():
def __init__(self):
self.keccak = keccak.Keccak_f(b = 1600)
self.sponge = sponge.Sponge(f = self.keccak, pad = sha3_hash_byte_padding, r = 1600 - 2*224, d = 224)
self.digest = bytearray(0)
def process(self, fd):
fd.seek(0, 2)
message = msg.Message(l = fd.tell(), fd = fd)
fd.seek(0, 0)
del(self.digest[0:len(self.digest)])
self.sponge.process(msg = message, out = self.digest)
print(self.digest)
print(len(self.digest))
def digest():
print(self.digest)当我实例化一个对象时,我可以没有问题地调用它的process方法,但是当我试图调用它的digest方法时,我得到
TypeError:“字节数组”对象不可调用
我也可以在print(self.digest)中使用__init__而不出错。
有人能告诉我这种行为的原因吗?
发布于 2016-01-07 12:55:15
再也没有digest方法了。您已经用digest属性重写了它。只有一个名称空间。
一个简短的例子:
class test():
def __init__(self):
self.attr = 1
def attr(self):
pass
t = test()
t.attr # 1
t.attr() # TypeError: 'int' object is not callable
test.attr # <unbound method test.attr>
test.attr(t) # works发布于 2016-01-07 13:07:40
digest实例属性(设置在__init__中)隐藏digest方法。您必须重命名实例属性或方法。
https://stackoverflow.com/questions/34655598
复制相似问题