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[:]
这应该很简单,但我就是看不出这里发生了什么:
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[:]