Ayg*_*ets 2 python pygame getattr
我现在遇到的问题是在Pygame中加载一堆声音文件作为自己的对象.您使用以下语法加载声音:
sound1 = pygame.mixer.Sound('file.wav')
Run Code Online (Sandbox Code Playgroud)
假设我有七个文件,我希望它们加载并命名为sound1 - sound7.而且我不想单独加载它们.如果我不知道它有缺陷,我会尝试这样的事情:
for i in range(1, 8):
new = 'sound' + str(i)
new = pygame.mixer.Sound(str(new) + 'wav')
Run Code Online (Sandbox Code Playgroud)
我将如何制作'new'它自己的变量,而不是字符串?我读过有关getattr的内容,但令人困惑.我真的想知道如何使用函数和循环来动态创建代码,但到目前为止,我找不到像我这样的初学者有用的东西.以此为例,是否有人愿意以简单的方式解释在代码中创建代码并将字符串转换为可用变量/对象的方法?
谢谢!
sounds = [] # list
for i in range(1, 8):
sounds.append(pygame.mixer.Sound('sound' + str(i) + 'wav'))
Run Code Online (Sandbox Code Playgroud)
要么
sounds = {} # dictionary
for i in range(1, 8):
sounds[i] = pygame.mixer.Sound('sound' + str(i) + 'wav')
Run Code Online (Sandbox Code Playgroud)
起初,似乎你使用与列表方法相同的字典方法,例如声音[1]声音[2]等等,但你也可以这样做:
sounds = {} # dictionary
for i in range(1, 8):
sounds['sound' + str(i)] = pygame.mixer.Sound('sound' + str(i) + 'wav')
Run Code Online (Sandbox Code Playgroud)
现在听起来像["sound1"]等工作,例如.