Python - len(somelist)返回的值与类中的方法不同

时间:2013-05-23 21:54:26

标签: python list class content-length

我有一个班级:

class something(object):
    def __init__(self, name=None, someobjects=[]):
        self.name = name
        self.someobjects = someobjects

我希望能够将这些对象的数量作为属性或方法。 例如

bob = something()
print bob.numberofojects
   5

bob.numberofobjects()
       5

我尝试将属性添加到类定义中:

self.numberofobjects = len(someobjects)

或作为类定义中的方法:

 def total(self):
     print len(self.someobjects)

但我没有成功。 两次尝试都返回0 - (并且数字不是0)但是所有对象(对于此类的每个项目)的长度都是一个大数字(相同的数字,但这是一个不同的问题)。

for person in listofpeoplewhoarethisclass:
        print person.name, person.numberofobjects, len(person.someobjects)

返回:

bob 0 716

适合所有人......

1 个答案:

答案 0 :(得分:3)

return函数中使用print代替total()

class something(object):
    def __init__(self, name=None, someobjects=[]):
        self.name = name
        self.someobjects = someobjects

    def total(self):
        return len(self.someobjects)

listofpeoplewhoarethisclass = [something("john", [1,2,3])]

for person in listofpeoplewhoarethisclass:
    print person.name, person.total(), len(person.someobjects)

返回:john 3 3

提示:我不知道你是否只是为了这个问题命名你的班级“某事”或列出“listofpeoplewhoarethisclass”,但请给你的班级,变量和列表有用和直观的名字(例如,而不是“总”将函数命名为“length”或“size”,因为总声音对我而言就是一个总和。