wake-up-neo.com

NameError: globaler Name ist nicht definiert

Ich verwende Python 2.6.1 unter Mac OS X.

Ich habe zwei einfache Python-Dateien (unten), aber beim Ausführen

python update_url.py

Ich steige auf das Terminal:

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

Ich habe versucht, die Dateien und Klassen anders umzubenennen, weshalb an den Enden X und Z stehen. ;)

Datei sqlitedbx.py

class SqliteDBzz:
    connection = ''
    curser = ''

    def connect(self):
        print "foo"

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

Datei update_url.py

import sqlitedbx

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

if __== "__main__":
    main()
26
Wizzard

Sie müssen tun:

import sqlitedbx

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

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

versuchen

from sqlitedbx import SqliteDBzz
5
joaquin

Das Importieren des Namespaces ist etwas sauberer. Stellen Sie sich vor, Sie haben zwei verschiedene Module, die Sie importieren, beide mit derselben Methode/Klasse. Es könnte ein paar schlechte Sachen passieren. Ich wage es zu behaupten, dass es normalerweise eine gute Praxis ist, zu verwenden:

import module

Über

from module import function/class
3
kfirbreger

So funktioniert Python ... Probieren Sie Folgendes aus:

from sqlitedbx import SqliteDBzz

So können Sie den Namen ohne das umgebende Modul direkt verwenden. Oder importieren Sie einfach das Modul und stellen Sie "sqlitedbx" voran. zu Ihrer Funktion, Klasse etc

0
devsaw