如何在列表中创建和存储类的对象

时间:2013-04-10 12:09:13

标签: python list class

我需要从单个类创建实例并将名称存储在列表中。

robot_list = []
for i in range (num_robots):
    robot_list.append('robot%s' %i)

这将创建一个名称列表,我希望将其用作单个类Robot的实例。但到目前为止它们属于str类型。所以我写了这个来改变他们的类型,并将类的实例分配给名称:

for i in robot_list:
    i = Robot()

稍后,当我想使用列表中的任何元素时,程序返回AttributeError,表示该对象仍然是一个字符串。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

robot_list = [Robot() for i in xrange(num_robots)]

创建num_robots类的Robot个实例,并将其存储到robot_list

如果你想“命名”它们,即构造函数获取一个字符串作为参数,请使用:

robot_list = [Robot('robot{}'.format(i)) for i in xrange(num_robots)]

答案 1 :(得分:1)

要添加到其他答案:您的作业无法按照预期的方式发挥作用。

for i in robots_list:
    i = Robot()

不会将机器人对象保存到列表中的每个索引。它将创建对象,但不会将其保存到您希望的索引,而是覆盖临时变量i。因此,列表中的所有项目都保持不变。

答案 2 :(得分:0)

您需要机器人类在初始化时获取字符串(作为其名称)。请注意,使用机器人列表时,您将对机器人对象执行操作,而不是其名称。但是,机器人现在将其名称存储在对象中。

class Robot():
    def __init__(roboName = ''):
        self.name = roboName

    # all other class methods after this

if __name__ == '__main__'
    robot_list = []
    for i in xrange (num_robots):
        robo_name = 'robot%s' % i
        robot_list.append(Robot(robo_name))