当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么类字段在一个类方法中可调用而在另一个类中无法调用?》经验,为你挑选了1个好方法。

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

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__没有错误.

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



1> Daniel Rosem..:

没有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

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有