1. 程式人生 > >關於錯誤:object() takes no parameters

關於錯誤: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__,難怪啊!

改成正確的函式名以後,就可以成功呼叫,不會報錯了~

希望有所幫助~