这应该很简单,但我不知道这里发生了什么:
def playlist_item_added(self, _):
temp_playlist = self.playlist_olv.GetObjects()
if not self.mirror_playlist:
self.mirror_playlist = temp_playlist
for item in self.mirror_playlist:
self.vlc_playlist.add_media(u.http_space_escape(item["loc"]))
self.vlc_player.set_media_list(self.vlc_playlist)
print "if"
print self.mirror_playlist
else:
print "else"
print self.mirror_playlist
for index, item in enumerate(temp_playlist):
if not item == self.mirror_playlist[index]:
media = vlc.Media(u.http_space_escape(item["loc"]))
#self.mirror_playlist.insert(index, item)
self.vlc_playlist.lock()
self.vlc_playlist.insert_media(media, index)
self.vlc_playlist.unlock()
问题是self.mirror_playlist
似乎在没有我问的情况下被添加到了。我只是不明白为什么。这是一个事件处理程序,当某些东西被添加到我的列表中时,它就会出现在这里。它检查是否已经设置self.mirror_playlist
- 如果没有,它设置它,没问题。如果已经设置,则添加到它(else块)。
注意我输入的照片。当我添加第一个项目时,一切都按计划进行。当我添加第二个项目时,紧跟在else之后的print self.mirror_playlist
打印出已经添加了第二个项目。此外,我甚至在else
块的中间看到了插入该列表的代码部分。
我检查了每一行代码,除了在此函数和构造函数中设置mirror_playlist
之外,其他地方都没有提到None
属性。我仔细检查了凹痕,我用印刷品仔细检查了流量是否应该是它应该是的(它是)。这个变量如何被添加到?我几乎可以肯定它是如此简单,以至于我看不到它。
答案 0 :(得分:0)
添加第一项时,您没有复制列表,请将该行更改为:
self.mirror_playlist = temp_playlist[:]