Python:类型错误:方法收到的参数比给定的更多

时间:2018-11-24 01:30:56

标签: python-2.7 arguments typeerror

我创建了此类来确定分布的规范化函数。 这是相对主类:

class Normaliser(object):

    def funcN(f, xIni, xFin, yIni, yFin): 

        return sym.integrate(f, (x, xIni, 
        xFin), (y, yIni, yFin))


def main():
    f = (1+sym.cos(x)**2)*sym.exp(-y/t)
    g = (3*sym.sin(x)**2)*sym.exp(-y/t)
    xIni = 0.
    xFin = 2*pi
    yIni = 0.
    yFin = 10.
    tau1 = 1.
    tau2 = 2.
    *funcN1 = Normaliser().funcN(f, xIni,             
    xFin, yIni, yFin)*  
    *funcN2 = Normaliser().funcN(g, xIni, 
    xFin, yIni, yFin)*

运行测试器时,在强调行中出现以下错误:

TypeError: funcN() takes exactly 5 
arguments (6 given)

我真的不明白该错误是由于考虑到该方法中没有自我而引起的。如果有人对可能的原因以及可能的解决方案有所了解,我将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:0)

作为Normaliser类的常规成员函数,funcN被传递给Normaliser对象,该对象在第一个参数(规范名称为self)上被调用。将此隐式参数添加到任何显式参数之前。
由于您已定义该函数以接受五个参数并传递了五个显式参数,因此将使用六个参数(一个隐式和五个显式)调用该函数。
如果funcN不使用Normaliser的任何(实例或类)成员变量,则可以将其定义在任何类之外或用@staticmethod装饰器标记以避免隐式{{1} }。