NameError:未定义全局名称

时间:2010-10-20 11:17:36

标签: python class namespaces

我在Mac OS X上使用Python 2.6.1。

我有两个简单的Python文件(如下所示),但是当我运行

python update_url.py

我上了航站楼:

Traceback (most recent call last):
  File "update_urls.py", line 7, in <module>
    main()
  File "update_urls.py", line 4, in main
    db = SqliteDBzz()
NameError: global name 'SqliteDBzz' is not defined

我尝试以不同方式重命名文件和类,这就是为什么两端都有x和z的原因。 ;)

文件sqlitedbx.py

class SqliteDBzz:
    connection = ''
    curser = ''

    def connect(self):
        print "foo"

    def find_or_create(self, table, column, value):
        print "baar"

文件update_url.py

import sqlitedbx

def main():
    db = SqliteDBzz()
    db.connect

if __name__ == "__main__":
    main()

4 个答案:

答案 0 :(得分:30)

你需要这样做:

import sqlitedbx

def main():
    db = sqlitedbx.SqliteDBzz()
    db.connect()

if __name__ == "__main__":
    main()

答案 1 :(得分:5)

from sqlitedbx import SqliteDBzz

答案 2 :(得分:3)

导入名称空间有点清晰。想象一下,您导入了两个不同的模块,它们都具有相同的方法/类。可能会发生一些不好的事情我敢说这通常是一种好习惯:

import module

from module import function/class

答案 3 :(得分:0)

这就是Python的工作原理。 试试这个:

from sqlitedbx import SqliteDBzz

这样你就可以直接使用没有封闭模块的名称。或者只是导入模块并添加'sqlitedbx'。你的功能,课程等