我创建了此类来确定分布的规范化函数。 这是相对主类:
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)
我真的不明白该错误是由于考虑到该方法中没有自我而引起的。如果有人对可能的原因以及可能的解决方案有所了解,我将不胜感激。预先感谢!
答案 0 :(得分:0)
作为Normaliser
类的常规成员函数,funcN
被传递给Normaliser
对象,该对象在第一个参数(规范名称为self
)上被调用。将此隐式参数添加到任何显式参数之前。
由于您已定义该函数以接受五个参数并传递了五个显式参数,因此将使用六个参数(一个隐式和五个显式)调用该函数。
如果funcN
不使用Normaliser
的任何(实例或类)成员变量,则可以将其定义在任何类之外或用@staticmethod
装饰器标记以避免隐式{{1} }。