0

我有一堂课:

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

给大家....

4

1 回答 1

3

在你的函数中使用return而不是:printtotal()

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”,但请给您的类、变量和列表提供有用且直观的名称(例如,而不是“total”命名函数“长度”或“大小”,因为对我来说总听起来像是一个总和)。

于 2013-05-23T22:03:44.157 回答