Я определил класс Listener
и создал словарь объектов Listener
. У каждого слушателя есть id
, чтобы идентифицировать их, и список artists
, который они прослушивают, artists = []
. Добавление чего-либо в список artists
добавляет его для всех экземпляров класса Listener
, а не для указанного экземпляра. Это моя проблема.
Класс Listener определяется следующим образом:
class Listener:
id = ""
artists = []
def __init__(self, id):
self.id = id
def addArtist(self, artist, plays):
print self.id # debugging...
print "pre: ", self.artists
self.artists.append(artist)
print "post: ", self.artists
Вот мой тестовый код для отладки:
def debug():
listeners = {}
listeners["0"] = Listener("0")
listeners["1"] = Listener("1")
listeners["0"].addArtist("The Beatles", 10)
listeners["0"].addArtist("Lady Gaga", 4)
listeners["1"].addArtist("Ace of Base", 5)
И вывод:
0
pre: []
post: ['The Beatles']
0
pre: ['The Beatles']
post: ['The Beatles', 'Lady Gaga']
1
pre: ['The Beatles', 'Lady Gaga']
post: ['The Beatles', 'Lady Gaga', 'Ace of Base']
Мой ожидаемый результат состоит в том, что окончательный вызов addArtist("Ace of Base", 5)
приведет к выводу
1
pre: []
post: ['Ace of Base']
Является ли это тонкостью Python, я не понимаю? Почему это результат и как я могу получить желаемый результат? Спасибо!