我有一个班级:
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
适合所有人......
答案 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”,因为总声音对我而言就是一个总和。