關於錯誤:object() takes no parameters
阿新 • • 發佈:2018-12-13
先說結論:
如果你出現了這個報錯,請檢查你的__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__,難怪啊!
改成正確的函式名以後,就可以成功呼叫,不會報錯了~
希望有所幫助~