NameError:名称“类”未定义

时间:2018-11-26 20:42:14

标签: python nameerror

我写了一个用于在数据库中搜索字符串的类(搜索器),但是当我要执行脚本时会出现以下错误:

  

NameError:未定义名称“搜索者”

我的代码:

class searcher:
    def __init__(self, dbname):
        self.con = sqlite3.connect(dbname)

    def __del__(self):
        self.con.close()

    def getmatchrows(self,q):
        fieldlist = 'w0.urlid'
        tablelist = ''
        clauselist = ''
        words = q.split(' ')
        tablenumber = 0
        wordids = []

        for word in words:
            wordrow = self.con.execute("select rowid from wordlist where word = '%s'" %word).fetchone()
            if wordrow !=None:
                wordid = wordrow[0]
                wordids.append(wordid)
                if tablenumber > 0:
                    tablelist+=','
                    clauselist+=' and '
                    clauselist+='w%d.urlid=w%d.urlid and ' % (tablenumber -1, tablenumber)
                fieldlist+=',w%d.location'% tablenumber
                tablelist+='wordlocation w%d'% tablenumber
                clauselist+='w%d.wordid = %d' % (tablenumber,wordid)
                tablenumber+=1

        query = 'select %s from %s where %s' % (fieldlist,tablelist,clauselist)
        cur = self.con.execute(query)
        rows = [row for row in cur]

        return rows,wordids

    wordsearch = searcher('searchindex.db')
    print  wordsearch.getmatchrows('indie music')

我在做什么错?!

1 个答案:

答案 0 :(得分:4)

代码的最后两行是缩进的,因此它们属于class searcher:块。但是,searcher类直到该块结束之后才存在,因此尝试在searcher中引用wordsearch = searcher('searchindex.db')会失败。

取消最后两行的缩进。