gpt4 book ai didi

python - 为什么类字段在一个类方法中可调用而在另一个类方法中不可调用?

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:07 25 4
gpt4 key购买 nike

我有一个看起来像这样的类:

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' object is not callable

我也可以在 __init__print(self.digest) 而不会出错。

谁能告诉我这种行为的原因?

最佳答案

不再有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

关于python - 为什么类字段在一个类方法中可调用而在另一个类方法中不可调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com