Я извиняюсь раньше времени, если мое объяснение недостаточно когерентное. Я новичок в python и кодировании. В настоящее время я пытаюсь создать программу Pokemon, которая позволит двум пользователям сражаться друг с другом. moveList
- это глобальный список, содержащий все возможные ходы в игре. x
- это файл, в котором индексы соответствуют ходу покемонов. pokeData.loadMoves
загружает существующий массив перемещения внутри каждого покемона с объектами 4 move
. Когда я впервые добавляю 4 шага Арканана, все в порядке. Однако, когда я добавляю движения eevee, он переписывает шаги Арканана. Я потратил около 40 минут, пытаясь исправить это безрезультатно.Python: изменения данных одного объекта меняют другой
отдельные объекты:
P1 = None
P2 = None
loadGame()
P1 = inputPokemon('player1')
P2 = inputPokemon('player2')
функции:
for x in file.readlines():
x = x.split(' ')
if(x[0].strip().lower() == string):
i =int(x[1])-1
j =int(x[2])-1
k =int(x[3])-1
l =int(x[4])-1
if(second == True):
print("Arcanine's moves before loading eevee")
for x in range(4):
print(P1.move[x].name)
pokeData.loadMoves(moveList[i],moveList[j],moveList[k],moveList[l])
print("Load %s's moves " %x)
if(second == True):
print("Arcanine's moves after loading eevee")
for x in range(4):
print(P1.move[x].name)
loadMoves:
move=['','','','']
def loadMoves(self, move1, move2, move3, move4):
self.move[0] = move1
self.move[1] = move2
self.move[2] = move3
self.move[3] = move4
Выход:
player2, please choose your Pokemon: Eevee
Loading moves for eevee
Arcanine's moves before loading eevee
['takedown']
['growl']
['flamethrower']
['confuseray']
Load 3's moves
Arcanine's moves after loading eevee
['watergun']
['doubleteam']
['shockwave']
['tackle']
две переменные, скорее всего, ссылки на один и тот же объект –
я уже пытался проверить, если (pokeDataArg является P1) для второго ввода данных и возвращает ложь –
Что такое pokeData и что такое 'function', для которого вы предоставили код? – sepulchered