NameError:未定义全局名称

Wiz*_*ard 26 python namespaces class

我在Mac OS X上使用Python 2.6.1.

我有两个简单的Python文件(下面),但是当我运行时

python update_url.py
Run Code Online (Sandbox Code Playgroud)

我上了航站楼:

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
Run Code Online (Sandbox Code Playgroud)

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

文件sqlitedbx.py

class SqliteDBzz:
    connection = ''
    curser = ''

    def connect(self):
        print "foo"

    def find_or_create(self, table, column, value):
        print "baar"
Run Code Online (Sandbox Code Playgroud)

文件update_url.py

import sqlitedbx

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

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

Sil*_*ost 30

你需要这样做:

import sqlitedbx

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

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

  • 因为`import sqlitedbx`将`sqlitedbx.py`导入到自己的命名空间中.如果您不想在文件名前添加前缀,请将其以不同方式导入到脚本的命名空间中:`from sqlitedbx import @Wizzard:SqliteDBzz`. (13认同)
  • @Wizzard:因为这就是模块,变量和属性在Python中的工作方式. (2认同)

joa*_*uin 5

尝试

from sqlitedbx import SqliteDBzz
Run Code Online (Sandbox Code Playgroud)