如何从python中的类返回列表的长度

时间:2013-04-20 02:16:10

标签: python

当我尝试从我的班级获取列表的len()时,我收到此错误: TypeError:'Stuff'类型的对象没有len() 当我尝试:

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

代码:

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

3 个答案:

答案 0 :(得分:5)

定义__len__特殊方法,如下所示:

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

现在你可以这样称呼它:

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

答案 1 :(得分:1)

使用__len__特殊方法

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

我强烈建议您阅读特殊方法的文档页面。 http://docs.python.org/2/reference/datamodel.html#special-method-names

你可以做很多巧妙的事情,比如定义如

等方法

Stuff() += 3Stuff()[4]的行为。

答案 2 :(得分:0)

len的参数可以是“序列(字符串,元组或列表)或映射(字典)”:http://docs.python.org/2/library/functions.html#len

不能只是一个对象,除非该对象明确定义__len__方法。这是len函数隐式调用的方法。