필자는 Python에서 2.7을 사용하는 것이 비교적 새로워졌습니다. 이것은 작동해야하는 것처럼 보이지만 그렇게하지 않는 것입니다.목록에서 클래스 집합 인스턴스화하기
Player 클래스의 여러 인스턴스로 Game 클래스의 인스턴스를 만들고 싶습니다. 사용자는 많은 수의 플레이어를 지정하여 Game을 인스턴스화합니다 (예 : game = Game (3)).
: 나는 이름 3 명 선수def getPlayerList(self):
self.playerlist = []
for p in range (self.numplayers):
self.playerlist.append("p" + str(p+1))
return self.playerlist
의 목록을 만들고 내가하는 방법으로 시작 플레이어 인스턴스 P1, P2 등
을 호출 할이 3 문자열 목록을 생성
self.playerlist = [p1, p2, p3]
이제 p1, p2 및 p3에 지정된 Player 인스턴스를 3 개 만들고 싶습니다. 이 할 수있는 가장 쉬운 방법이 될 듯 :
def initPlayers(self):
self.getPlayerList()
for i in self.playerlist:
i = Player(i) # doesn't work
return
이 코드가하는 플레이어 인스턴스 3 번을 통해 루프하지만, "나는"문자열 P1, P2 및 P3로 대체되지 않습니다. 따라서 예를 들어
p1.name
은 정의되지 않았습니다. 내가 루프이 다른 코드를 테스트하는 경우 그 문제에 대한
는, 그래서 기대 대체 작동,i.name
입니다. 예를 들어 :
for i in self.playerlist:
print i
p1
p2
p3
그러나
i = Player(i)
는이 일을하지 않는 이유
p1 = Player("p1")
내가 알아낼 수 없습니다 인스턴스로 설정하지 않고, 방법을 모른다 그렇지 않으면 내가이 일을해야 해. 고마워.
정확합니다. 이 경우 목록도 충분하다.'p = [x in (i) in i xrange (n)] '. 그런 다음'p [0]','p [1]'등과 같이 사용하십시오. – Sahand
이미 목록 버전이 있습니다. 단순히 'xrange'를 사용하면 정확한 플레이어 이름이 부여되지 않습니다. – jonrsharpe