Python: Ошибка типа: метод получает больше аргументов, чем указано - PullRequest
0 голосов
/ 24 ноября 2018

Я создал этот класс для определения функции нормализации распределения.Вот класс с относительным main:

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 голосов
/ 24 ноября 2018

Как обычная функция-член класса Normaliser, funcN передается объекту Normaliser, к которому он вызывается (канонически именуемый self), в качестве первого параметра.Этот неявный параметр добавляется перед любыми явными параметрами.
Поскольку вы определили функцию, которая принимает пять параметров и передала пять явных параметров, функция вызывается с шестью параметрами - одним неявным и пятью явными.
Если funcNне использует (экземпляр или класс) переменные-члены Normaliser, их можно определить вне любого класса или пометить с помощью декоратора @staticmethod, чтобы избежать добавления неявного self.

...