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

Python -- var getting set without me setting it, I may be losing my mind

这应该很简单,但我就是看不出这里发生了什么:

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 的构造函数中。我仔细检查了缩进,我仔细检查了打印件,确认流程正是它应该的样子(它是)。这个变量是如何添加的?我几乎可以肯定它是如此简单以至于我看不到它。

添加第一项时,您并未复制列表,将该行更改为:

self.mirror_playlist = temp_playlist[:]