关于错误:object() takes no parameters

先说结论:

如果你出现了这个报错,请检查你的__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__,难怪啊!

改成正确的函数名以后,就可以成功调用,不会报错了~

希望有所帮助~


猜你喜欢

转载自blog.csdn.net/qq_34037046/article/details/82954006