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

2024-06-17 12:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

这将创建一个我要用作单个类实例的名称列表Robot。但到目前为止,它们是str型的。所以我写这篇文章是为了改变它们的类型,并将类的实例分配给名称:

for i in robot_list:
    i = Robot()

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

我怎样才能解决这个问题?你知道吗


Tags: 实例in名称类型列表forrobotrange
3条回答
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)]

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

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))

补充其他答案:你的作业没有按你期望的方式进行。你知道吗

for i in robots_list:
    i = Robot()

不会将robot对象保存到列表中的每个索引。它将创建对象,但不会将其保存到所需的索引中,而是覆盖临时变量i。因此,清单中的所有项目保持不变。你知道吗

相关问题 更多 >