web-dev-qa-db-ja.com

NameError:グローバル名が定義されていません

Mac OS XでPython 2.6.1を使用しています。

2つのシンプルな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()
26
Wizzard

あなたがする必要があります:

import sqlitedbx

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

if __name__ == "__main__":
    main()
30
SilentGhost

試してみる

from sqlitedbx import SqliteDBzz
5
joaquin

名前空間のインポートはややクリーンです。インポートする2つの異なるモジュールがあり、どちらも同じメソッド/クラスであるとします。いくつかの悪いことが起こるかもしれません。私はそれが使用するのが通常良い習慣であるとあえて言うでしょう:

import module

以上

from module import function/class
3
kfirbreger

これがPythonの仕組みです。これを試してみてください。

from sqlitedbx import SqliteDBzz

モジュールを囲むことなく名前を直接使用できるようにするか、モジュールをインポートして「sqlitedbx」を追加するだけです。あなたの関数、クラスなどに

0
devsaw