Python - var在没有我设置的情况下设置它,我可能会失去理智

时间:2016-02-21 01:51:16

标签: python libvlc

这应该很简单,但我不知道这里发生了什么:

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属性。我仔细检查了凹痕,我用印刷品仔细检查了流量是否应该是它应该是的(它是)。这个变量如何被添加到?我几乎可以肯定它是如此简单,以至于我看不到它。

1 个答案:

答案 0 :(得分:0)

添加第一项时,您没有复制列表,请将该行更改为:

self.mirror_playlist = temp_playlist[:]