2017-10-21 93 views
0
class Spillebrett: 
    def _init_ (self, rader, kolonner): 
     self._rader=rader 
     self._kolonner=kolonner 

我已經在一個文件中寫入這一點,並在另一個我寫了下面的試圖在Python一類叫

從spillebrett進口Spillebrett

def main(): 
    nyttspillebrett=Spillebrett() 
    nyttspillebrett(input("Fyll inn antall rader\n"), input("Fyll inn antall kolonner\n")) 

,但我得到的錯誤: TypeError: 'Spillebrett' object is not callable

爲什麼對象不可調用?

回答

1

這是__init__而不是_init_

我假設你發佈你的實際代碼。

+0

它工作。謝謝!! –

3

要說的對象是,你可以把它像這樣調用方法:

my_obect() 

使用括號像被調用。所以函數可以被調用,例如max(1,2,3),類對象調用的:my_instance = MyClass()等,您已定義的類,類本身就是可調用的,的確,你這樣做,在這裏:

nyttspillebrett=Spillebrett() 

但是,您要撥打實例你的類的,但你的實例不可調用。相反,你可能想:

nyttspillebrett = Spillebrett(input("Fyll inn antall rader\n"), input("Fyll inn antall kolonner\n")) 

但是請注意,這仍然是行不通的,因爲你需要改變你的_init___init__,通知,這是強調:的__代替_

請注意,可以通過實現__call__方法來調用用戶定義的類中的對象,但這可能不是您想要在此處執行的操作。

+0

如果爲該類定義了__call__方法,則可以調用實例。 – anupsabraham

+0

@anupsabraham是的,他們可以。但這幾乎肯定不是OP想要的,我認爲這隻會令人困惑,但是很好。 –

+0

是的。真正。剛纔說過,如果你想將它包含在答案中。 – anupsabraham