2010-12-04 87 views
0
class speciallist(list): 

    def __new__(self): 
     return self 

    def custommethod(self,param): 
     #do stuff 
     return value 

listesp = speciallist() 
listesp.custommethod(param) 

繼承我得到問題從列表

我認爲這是將調用從類中的方法,它爲什麼這樣做「結合的方法custommethod()必須與speciallist實例作爲第一個參數被稱爲」 ?

+1

嘗試沒有'__new__' – 2010-12-04 15:17:41

回答

5

這是一個鬼鬼祟祟的。簡短的回答,從您的定義中刪除__new__方法。

__new__ method是一種類方法,所以它將而不是實例作爲其第一個參數。它旨在創建一個實例(可能是另一個類)並返回它。你只是簡單地返回這個類,而不是它的一個實例。 Python允許您從那裏調用custommethod,但它不綁定到實例,所以它不會自動將self作爲第一個參數插入。

要設置實例,請使用__init__方法(以self作爲其第一個參數,但不返回任何內容)。