列表中的NameError在构造函数[Python3]中初始化

问题描述 投票:1回答:1

我对编程非常陌生,到目前为止我的项目都是由弗兰肯斯坦式的怪物组成的拼接样本代码。这是我在很大程度上独立开发的第一个项目。到目前为止它还不顺利。虽然很有趣!

我正在处理一个类函数,它只返回一个不在另一个给定列表中的列表的值。我从here找到了代码,但是我得到了一个N​​ameError。

我的代码:

def __init__ (self, extracted): #Constructor
    allWords = extracted
    shelfFile = shelve.open('knownWordsPersistant') #Opens preexisting shelve module file
    knownWords = shelfFile['knownWords'] #The list that the error specifies

def getUnknownWords (self):
    return [x for x in allWords if x not in knownWords] #Line that causes error

而错误:

Traceback (most recent call last):
  File "C:\Users\Jack 
Hanson\Desktop\Programming\Python\VocabFinder\main.py", line 16, in <module>
    possUnknWrds = knownWordsObject.getUnknownWords(vocabArray)
  File "C:\Users\Jack 
Hanson\Desktop\Programming\Python\VocabFinder\KnownWordsUpdater.py", line 
16, in getUnknownWords
    if (inArray[i] not in knownWords):
NameError: name 'knownWords' is not defined

如果您需要更多上下文或信息,我很乐意提供。

python nameerror
1个回答
2
投票

这是一个范围问题....

你应该在类self.knownWords上设置一个属性,然后在你的函数中使用self.knownWordsallWords也是如此。

在您的代码中,您尝试引用getUnknownWords中的局部变量,这些变量未定义为错误消息指示。

此外,你不应该骆驼案件。使用下划线。

© www.soinside.com 2019 - 2024. All rights reserved.