我有一个看起来像这样的课程:
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)
Run Code Online (Sandbox Code Playgroud)
当我实例化一个对象时,我可以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 # <unbound method test.attr>
test.attr(t) # works
Run Code Online (Sandbox Code Playgroud)