J'utilise Python 2.6.1 sur Mac OS X.
J'ai deux fichiers Python simples (ci-dessous), mais quand je lance
python update_url.py
Je monte sur le 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
J'ai essayé de renommer les fichiers et les classes différemment, c'est pourquoi il existe x et z aux extrémités. ;)
class SqliteDBzz:
connection = ''
curser = ''
def connect(self):
print "foo"
def find_or_create(self, table, column, value):
print "baar"
import sqlitedbx
def main():
db = SqliteDBzz()
db.connect
if __== "__main__":
main()
Tu as besoin de faire:
import sqlitedbx
def main():
db = sqlitedbx.SqliteDBzz()
db.connect()
if __== "__main__":
main()
essayer
from sqlitedbx import SqliteDBzz
L'importation de l'espace de noms est un peu plus propre. Imaginez que vous importiez deux modules différents, les deux avec la même méthode/classe. De mauvaises choses peuvent arriver. J'oserais dire que c'est généralement une bonne pratique d'utiliser:
import module
plus de
from module import function/class
C'est comme ça que Python fonctionne ... Essayez ceci:
from sqlitedbx import SqliteDBzz
De telle sorte que vous pouvez directement utiliser le nom sans le module englobant. Ou importez simplement le module et ajoutez le préfixe 'sqlitedbx' à votre fonction, classe, etc.