我正在编写一个程序,每次都会以不同的方式对音乐进行排序。我现在有了一个带有按钮的基本GUI,可以触发重新排序,播放和弹跳音轨。
因此,在执行时,程序会触发重新排序功能一次,并返回准备好播放的输出值。 这可以使用播放功能播放,但要在功能中接收输出,必须重新触发初始功能,这是不对的。
每次用户想要重放曲目时,我都不想重新触发排序功能,我只需要访问初始返回数据。我无法在重新排序函数之外分配返回的数据,因为它只会被保存一次,并且只有第一个序列可供播放。
以下代码示例就是我所拥有的,它对我无效。
我需要的是每次重新排序时保存变量的方法,并使其可以被播放功能访问。播放不应仅仅为了获得价值而重新触发重新排序。
:::
重排序():
blah blah, sequencing.
return output
播放():
output=Resequence() # the value shouldnt change on each play.
play(output)
:::
输出是来自PyDub的音频片段。我尝试将其保存在文本文件中,这显然无效。
请帮助:(
答案 0 :(得分:1)
如果Resequence是一个函数而不是一个类方法,那么你可能需要使用一个全局变量来存储所需的序列。这样的事情:
seq = None
def Resequence():
global seq
if seq != None:
return seq
#now do your blah, blah, blah
seq = my_generated_sequence
return seq
但是我觉得你需要让Resequence成为一个对象的一部分,每次允许多次调用不同的文件等等。
class Player(object):
def __init__(self):
self._seq = None
def Resequence(self):
if self._seq != None:
#same logic here...