Listener
sınıfını tanımladım ve Listener
nesnesi için bir sözlük oluşturdum. Her dinleyici, onları tanımlamak için bir id
ve dinledikleri artists
listesini içerir, artists = []
. artists
listesine bir şey eklemek, söz konusu örnek yerine, Listener
sınıfının tüm örnekleri için ekler. Bu benim sorunum. Dinleyici sınıf olarak tanımlanırBir python sınıfının bir üyesi olarak listeleme, içeriği neden sınıfın tüm örneklerinde paylaşılıyor?
aşağıdaki gibidir:
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)
Ve çıkış: Burada
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
benim ayıklama testi kodudur
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']
My beklenen çıkışı olmasıdır son addArtist("Ace of Base", 5)
çağrı, çıkış
1
pre: []
post: ['Ace of Base']
Bu bir Python inceliği mi anlamadım? Neden bu çıktı ve bunun yerine istenilen çıktıyı nasıl alabilirim? Teşekkürler!