Python class 中 varB = self(varA) 的目的是什么?

What is the purpose of varB = self(varA) in a Python class?

我正在调试 Python 代码并在 类:

之一中看到此代码模式

def someOtherFunction (x):
    return x**2

class baseX():
    pass

class baseY():
    pass


class newBase (baseX, baseY):

    def __init__ (self, **kwargs):
        super().__init__(**kwargs)
    
    def func (self, varX):
        varA = someOtherFunction(varA)
        varB = self(varA)
        return varB

我很难理解 self() 语法。什么是 varB = self(varA)?它在做什么?

原代码不是我的代码。原始代码应该可以工作。我写的伪代码是为了更好地表达我的问题。请参阅 the original code on Github(第 101 行)

  • 首先,您需要提供一个MRE。比如当你定义了一个class的时候,不要在class
  • 之前使用def
  • 我尝试将您代码中的错误修复为 MRE
def someOtherFunction(x):
    return x+1

class baseX:
    pass

class baseY:
    pass

class newBase (baseX, baseY):

    def __init__ (self, someARGS):
        self.varA = someARGS

    def __call__(self,x):
        return x + 5

    def func (self, varX, varA):
        varX = someOtherFunction(varX)
        varB = self(varA)
        return varB

x = newBase(5)
print(x.func(0,10))

#result : 15
  • 在这段代码中,self(varA)表示调用newBase作为一个可调用对象,普通的class是不可调用的。