Python如何拼接两个字符串?调用pygame Sound的play方法报错如何解决?
错误原因
你通过字符串拼接得到的zz只是"self.hupen"格式的普通字符串,并不是类初始化时生成的pygame.mixer.Sound实例,给play方法传入字符串不符合参数类型要求,因此触发报错。
解决方案
不要用字符串拼接的方式获取实例属性,使用Python内置的getattr()方法动态读取对象属性即可,直接替换出错的两行代码:
# 替换原来的 zz=str("self." + auswahl) 以及后续play调用代码 zz = getattr(self, auswahl) zz.play()
如果需要兼容不存在对应属性的异常场景,可以增加默认值判断:
zz = getattr(self, auswahl, None) if zz: zz.play()
修改后完整方法代码
def mach_geraeusche(self,warten,auswahl): if self.zaehler < 10: aktuelle_zeit = pygame.time.get_ticks() if aktuelle_zeit - self.startzeit > warten: self.startzeit = aktuelle_zeit self.zaehler +=1 zz = getattr(self, auswahl) zz.play()
内容的提问来源于stack exchange,提问作者Joachim
相关产品推荐
相关产品推荐

