我有一个看起来像这样的课程:
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:'bytearray'对象不可调用
我还可以print(self.digest)
在__init__
没有错误.
谁能告诉我这种行为的原因?
没有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 #test.attr(t) # works