Создание экземпляров в цикле

Я только начал узнавать о классах на прошлой неделе в своем игровом разработчике. учебный класс. Я пытаюсь создать что-то, что позволит мне создавать экземпляры чего-то в цикле for. Например, я пытаюсь создать 5 экземпляров Player в цикле и использовать идентификационный номер, который будет увеличиваться с каждым циклом цикла. Я зашел так далеко.

class Player(object):
    def __init__(self, nm, am, wp, ht, ide):
        self.name = nm
        self.ammo = am
        self.weapon = wp
        self.health = ht
        self.id = ide

    def __str__(self):
        values = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "ID #: " + str(self.id)
        return values

def main():
    Players = 0
    while Players < 5:
        play1 = Player("Joe", 5, "Machine gun", 22, 1)
        print (play1)
        Players = Players + 1

Мне удалось создать 5 экземпляров Joe, и это нормально, но как мне увеличить идентификатор #?


person Justin Farr    schedule 28.02.2015    source источник


Ответы (3)


    class Player(object):
    def __init__(self, nm, am, wp, ht, ide):
        self.name = nm
        self.ammo = am
        self.weapon = wp
        self.health = ht
        self.id = ide

    def __str__(self):
        values = "Hi my name is " + self.name + "\n" + "Ammo: " + str(self.ammo) + "\n" + "Weapon: " + self.weapon + "\n" + "Health: " + str(self.health) + "\n" + "ID #: " + str(self.id)
        return values

def main():
    Players = 0
    while Players < 5:
        play1 = Player("Joe", 5, "Machine gun", 22, Players)
        print (play1)
        Players = Players + 1

Используйте игроков Var и поместите их в класс

person perfectvid2012    schedule 28.02.2015
comment
Я использовал этот, так как по какой-то причине он мне показался лучше всего, но теперь, когда я пытаюсь также создать класс и 5 экземпляров Enemy поверх Players, он, похоже, не работает. Что я могу сделать, чтобы исправить это? - person Justin Farr; 28.02.2015
comment
Ты знаешь, что я могу сделать, @perfectvid2012? - person Justin Farr; 28.02.2015

Я бы поместил ваших игроков в массив, чтобы их можно было использовать вне цикла.

def main():
Players = 0
list_of_players = []
for i in range(5):
    list_of_players.append(Player("Joe", 5, "Machine gun", 22, i+1))
    print list_of_players[i]
person preezzzy    schedule 28.02.2015

Вы можете использовать список:

players = []
while len(players) < 5:
    players.append(Player("Joe", 5, "Machine gun", 22, len(players) + 1))
person cdonts    schedule 28.02.2015