2013-04-20 38 views
1

因此,當我嘗試從我的類中獲取列表的len()時,出現此錯誤: TypeError:類型爲'Stuff'的對象沒有len() 當我嘗試:如何從python中的類返回列表的長度

>>> s = Stuff() 
>>> len(s) 
error instead of showing 0 like: 
>>> l = [] 
>>> len(l) 
0 

代碼:

class Stuff(): 
    def __init__(self): 
     self.lst = [] 
+0

爲什麼你的課堂'Stuff'有一個長度?如果你正在實現一個新的序列,你應該考慮繼承一個爲此目的而設計的基類,它將爲你提供'__len__'的實現。 – 2013-04-20 02:26:07

+0

我認爲你應該做的是:len(s.lst) – 2013-04-20 02:41:52

回答

5

定義__len__特殊方法,像這樣:

class Stuff(): 
    def __init__(self): 
     self.lst = [] 
    def __len__(self): 
     return len(self.lst) 

現在你可以這樣調用:

>>> s = Stuff() 
>>> len(s) 
0 
0

的參數len可以是「一個序列(字符串,元組或列表)或映射(字典)」:http://docs.python.org/2/library/functions.html#len

不能簡單地是一個對象,除非該對象明確地定義了一個__len__方法。這是由len函數隱式調用的方法。

相關問題