Ответ 1
Вам нужно сделать:
import sqlitedbx
def main():
db = sqlitedbx.SqliteDBzz()
db.connect()
if __name__ == "__main__":
main()
Я использую Python 2.6.1 на Mac OS X.
У меня есть два простых файла 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.;)
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 __name__ == "__main__":
main()
Вам нужно сделать:
import sqlitedbx
def main():
db = sqlitedbx.SqliteDBzz()
db.connect()
if __name__ == "__main__":
main()
попробовать
from sqlitedbx import SqliteDBzz
Импорт пространства имен несколько чище. Представьте, что у вас есть два разных модуля, которые вы импортируете, оба из них с тем же методом/классом. Может случиться что-то плохое. Я бы посмел сказать, что обычно рекомендуется использовать:
import module
над
from module import function/class
Что работает Python. Попробуйте следующее:
from sqlitedbx import SqliteDBzz
Таким образом, вы можете напрямую использовать имя без прилагаемого модуля. Или просто импортируйте модуль и добавьте 'sqlitedbx.' к вашей функции, классу и т.д.