我有一个看起来像这样的课程:
[DesignTimeVisible(true)]
当我实例化一个对象时,我可以毫无问题地调用它的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
方法时,我得到了
TypeError:' bytearray'对象不可调用
我也digest
print(self.digest)
没有错误。
有人能说明这种行为的原因吗?
答案 0 :(得分:5)
不再有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
答案 1 :(得分:1)
digest
实例属性(在__init__
中设置)会隐藏digest
方法。您必须重命名实例属性或方法。