Jupyter Notebook中出现NameError: name 'band'未定义问题求助
问题分析与解决办法
嘿,我一眼就揪出你代码里的问题啦,这就是导致name 'band' is not defined报错的核心原因:
1. 类方法未正确引用实例属性
你的getLyrics方法里直接写了band和song,但这俩变量在方法的局部作用域里根本没定义!你在__init__里定义的是实例属性,必须通过self.band和self.song才能访问——Python不会自动把实例属性暴露给方法的局部变量,所以它找不到band这个名字。
2. 实例化类时的拼写错误
你最后一行的d = Catc...明显是类名CatchLyrics的拼写截断,这也会导致后续调用方法时报错,得补全成正确的类名才行。
修正后的完整代码
import lyricwikia x = 'Dragonforce' y = 'Through the fire and flames' class CatchLyrics: def __init__(self, band, song): self.band = band self.song = song def getLyrics(self): # 必须用self.前缀引用实例属性 lyric = lyricwikia.get_lyrics(self.band, self.song) return lyric # 实例化类时要写对完整类名 d = CatchLyrics(x, y) # 调用方法获取歌词 print(d.getLyrics())
至于你说之前复制粘贴还能运行,大概率是当时的代码要么直接用了全局变量x和y(比如直接调用lyricwikia.get_lyrics(x,y)),要么是getLyrics方法里正确写了self.band,后来修改或复制时不小心删掉了self.导致的~
内容的提问来源于stack exchange,提问作者Quinton Jackson
相关产品推荐
相关产品推荐

