2013-06-21 5 views
0

이 작업을 수행하는 데 문제가 있습니다. 다음 작품 :이 할 수있는 방법이 알고Python - for 루프를 사용하여 클래스를 인스턴스화합니다.

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

: 나는 그것으로 변수를 추가하려고하면

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

하지만, 나는 아무것도 얻을 수 없다. 죄송합니다, 아직 새것입니다.

+2

"아무것도 얻지 못했다"는 것은 무엇을 의미합니까? – BrenBarn

+1

아마도 port_list는 비어있을 것입니다. 그것을 밖으로 인쇄하고 확인하십시오. – rajpy

+0

왜 내가이 함수들을'[None '] * num_players]에서 n에 대해 return [Player (n)]으로 바꾸고, [port_list에서 i에 대해 Port (i)를 반환 하겠느냐'는 강한 성향을 가지고 있습니다. –

답변

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

all_portsplayer_list을 사용한 방법을 알려주십시오. 위의 코드에서 둘 다 지역 변수이므로 메서드 외부에서 사용할 수는 없습니다. 문을 return 추가하십시오. return all_portsreturn player_list처럼 필요할 때 추가하고 all_ports = initate_players(num)all_ports = instance_ports(pl)을 사용하십시오.

관련 문제