У меня есть класс со словарем.
Я создаю n числовых экземпляров класса.
Когда I + = значения ключа в этом словаре, это отражается в каждом отдельном объектеЯ создал экземпляр этого объекта.
Как сделать этот словарь уникальным для каждого экземпляра этого класса?
Вот как я создаю объект:
for num in range(0, numOfPlayers):
listOfPlayerFleets.append(fleet.Fleet())
Вот как вызвать метод addShip.У меня есть это в цикле for, и я проверил, что currentPlayer int увеличивается каждый раз.
listOfPlayerFleets[currentPlayer].addShip(typeOfShip, num)
Вот код в моем объекте флота ниже для примера.
class Fleet:
""" Stores Fleet Numbers, Represents a fleet """
shipNamesandNumber = {}
def addShip(self, type, numToAdd):
self.shipNamesandNumber[ships.shipTypesDict[type]['type']] += numToAdd
В pydev, когда я выполняю этот вызов функции, каждый объект с shipNamesandNumbers увеличивается на numToAdd.
Это происходит, даже если объекты флота находятся в разных местах памяти.
Нужно ли передавать словарь из другого класса?Я написал тестовый класс только для проверки этого:
class Foo:
"""Testing class with a dictionary"""
myDictionary = {}
def __init__(self):
self.myDictionary = {'first':0, 'second':0}
def addItem(self, key, numToAdd):
self.myDictionary[key] += numToAdd
numOfFoos = 2
listOfFoos = []
for num in range(0, numOfFoos):
listOfFoos.append(Foo())
listOfFoos[0].addItem('first', 1)
listOfFoos[0].addItem('first', 2)
listOfFoos[1].addItem('first', 2)
print " This is the value of foo1 it should be 3"
print listOfFoos[0].myDictionary
print "This is the value of foo2 ot should be 2"
print listOfFoos[1].myDictionary
У класса Foo нет такой же проблемы, как у моих объектов флота, в которых все их словари изменены при изменении одного словаря.
Так что это сделало меня еще более запутанным.