我有以下代码:
import scipy.optimize
class demo(object):
def get_square(self, var):
return var ** 2 - 4
new = demo()
scipy.optimize.fsolve(new.get_square(), 1)
我收到以下错误:
TypeError: get_square() missing 1 required positional argument: 'var'
但是get_square()应该总是self
并且self
不需要传递。问题是什么?
答案 0 :(得分:3)
在 fsolve
进行任何更改之前,您实际上正在调用函数;由于调用没有参数,这将提高预期的TypeError
。
您可以将通话()
移至new.get_square
:
scipy.optimize.fsolve(new.get_square, 1)
或者,由于您实际上甚至没有在self
中使用get_square
,请将其设为@staticmethod
:
class demo(object):
@staticmethod
def get_square(var):
return var ** 2 - 4
new = demo()
scipy.optimize.fsolve(new.get_square, 1)
两个小笔记:
demo -> Demo
。 object
。