Python - 使用for循环实例化类

时间:2013-06-21 05:02:20

标签: python python-3.x

我在做这件事时遇到了麻烦。以下作品:

def initiate_players(num_players):
    player_list = []
    for i in range(num_players):
        player_list.append(Player("None"))

但是一旦我尝试在其中添加变量,我什么也得不到:

def instance_ports(port_list):
    all_ports = []
    for i in port_list:
        all_ports.append(Port(i))

我知道有办法做到这一点。对不起,还是新的。

2 个答案:

答案 0 :(得分:2)

现在player_listall_ports是局部变量。也就是说,它们仅在定义它们的函数内可用。任何在函数之外使用它们的尝试都将失败。

尝试使用您的功能return

def initiate_players(num_players):
    player_list = []
    for i in range(num_players):
        player_list.append(Player("None"))
    return player_list

def instance_ports(port_list):
    all_ports = []
    for i in port_list:
        all_ports.append(Port(i))
    return all_ports

现在您可以从初始化的任何地方调用它们,如:

num = 5
port_list = [1,3,5,7]
player_list = initiate_players(num)
port_list = instance_ports(ports)

请记住,多次调用这些不会产生累积效应,但看起来你只打算调用它们一次。

答案 1 :(得分:1)

请声明您使用all_portsplayer_list的方式。在上面的代码中,它们都是局部变量,你不能在方法之外使用它们。请添加return声明。与return all_portsreturn player_list一样,在需要时添加,使用all_ports = initate_players(num)all_ports = instance_ports(pl)