我需要从单个类创建实例并将名称存储在列表中。
robot_list = []
for i in range (num_robots):
robot_list.append('robot%s' %i)
这将创建一个名称列表,我希望将其用作单个类Robot
的实例。但到目前为止它们属于str
类型。所以我写了这个来改变他们的类型,并将类的实例分配给名称:
for i in robot_list:
i = Robot()
稍后,当我想使用列表中的任何元素时,程序返回AttributeError
,表示该对象仍然是一个字符串。
我该如何解决这个问题?
答案 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))