2013-04-20 33 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函数隐式调用的方法。

相关问题