先说结论:
如果你出现了这个报错,请检查你的__init__函数名或者其定义有没有写错。
注意:下划线左右是两个;中间的英文字母是四位,请一一对应。
--------------------------------------如果你有兴趣可以看看下面的分析过程------------------------------------
一、现象
先贴上自己出错的代码:
class Perceptron(object): def __int__(self, eta=0.01, n_iter=10): self.eta = eta self.n_iter = n_iter pass pass ppn=Perceptron(eta=0.1,n_iter=10)报错如下:
Traceback (most recent call last):
File "D:/PyCharm/Neutron/Perceptron.py", line 13, in <module>
ppn=Perceptron(eta=0.1,n_iter=10)
TypeError: object() takes no parameters
为什么会这样呢?
二、分析
”object() takes no parameters”这句话的意思是:object()不需要传进参数。
笔者瞬间就感到纳闷了,为什么不需要传入参数?我不是定义了初始化函数吗?这初始化函数里面有俩参数啊,为什么不能传递呢?(这位朋友,你戏真多)
最可能的解释是:
在实例化一个对象的时候,使用 类名+(参数)并没有成功调用到这个初始化参数,编译器默认调用类名+( ) ,这是一个无参的初始化函数,自然就不需要传进参数了。
如果尝试调用自己定义的初始化函数的方法没有错的话,那么之所以不能成功调用初始化函数,错误就在于初始化函数本身!
回去检查一下我写的这个初始化函数,猛地发现我把__init__写成了__int__,难怪啊!
改成正确的函数名以后,就可以成功调用,不会报错了~
希望有所帮助~