這應該是很簡單,但我看不出有什麼是怎麼回事:的Python - 變種越來越設置沒有我設置的話,我可能會失去我的腦海
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塊)。
注意我放入的打印件。當我添加第一個項目時,一切都按計劃進行。當我添加第二個項目時,print self.mirror_playlist
就在else打印出第二個項目已添加到它之後。此外,我甚至在else
塊的中間看到了插入該列表的代碼部分。
我檢查了代碼的每一行,並且mirror_playlist
屬性在其他任何地方都沒有提及,除了這個函數和構造函數中它設置爲None
。我仔細檢查了縮進,我仔細檢查了印刷圖片,發現流程確實如此(它是)。這個變量如何被添加到?我幾乎可以確定這件事很簡單,我看不到它。
你只顯示某些未知類的成員函數。沒有足夠的真正重現問題。另外,什麼是GetObjects()返回?它是否每次創建一個新列表?如果沒有,那麼這可能是你的問題。 –
執行'self.mirror_playlist = temp_playlist [:]'並查看問題是否存在。 – ekhumoro
謝謝ekhumoro,它做到了。我使用了相同的「= list(temp_playlist)」,因此它更具可讀性。 Tom Karzes - 我的歉意。 GetObjects返回一個列表,它來自ObjectListView。 – linus72982