NoneType 对象没有属性 'play'

NoneType object has no attribute 'play'

import pygame as pg, sys
from pygame.locals import *
import os

pg.mixer.pre_init(44100, 16, 2, 4096) 
pg.init()

a = pg.mixer.music.load("./Sounds/ChessDrop2.wav")
a.play()

上面的代码是我为了测试pygame是否可以播放声音而写的。我的 'ChessDrop2.wav' 文件是 16 位 wav-PCM 文件,因为当文件是 32 位 PCM 时,pygame 将其识别为未知格式。现在,当我 运行 代码时错误消失了,但下面的错误却出现在我的 shell 上。我已将声音文件分配给变量 'a' 所以声音不应该播放吗?我的 python 版本是 3.6.1,pygame 是 1.9.3。

a.play()
AttributeError: 'NoneType' object has no attribute 'play'

此函数不return任何要使用的对象,请查看文档:

https://www.pygame.org/docs/ref/music.html#pygame.mixer.music.load

加载文件后你应该使用

pg.mixer.music.play()

正如@CaMMelo 所述,pygame.mixer.music.load(filename) 方法不是 return 对象。

但是,如果您在加载后寻找 return 对象,您可能想尝试 pygame.mixer.Sound

pygame.mixer.Sound
Create a new Sound object from a file or buffer object

from pygame import mixer
mixer.init()
sound = mixer.Sound("yourWaveFile.wav")
sound.play()