2010-12-09 7 views
2

ich arbeite an einigen grundlegenden python stuff innerhalb der google app engine und ich war nicht in der lage, die richtige weise zu strukturieren meine handler.import & structure python modules/classes

  • /main.py
  • /project/handlers/__init__.py
  • /project/handlers/AccountHandler.py

die AccountHandler ist im Grunde eine Klasse

class AccountHandler(webapp.RequestHandler): 

wenn ich von project.handlers import verwende AccountHandler Python geben Sie mir immer eine

TypeError: 'module' object is not callable

Wie muss ich meine Klassen benennen/importieren/strukturieren?

prost, Martin

Antwort

6

Um von the docs zu zitieren umbenennen:

A module is a file containing Python definitions and statements. The file name is the module name with the suffix .py appended.

Die AccountHandler Sie importieren das Modul /project/handlers/AccountHandler.py in diesem Fall ist. Die Datei AccountHandler.py kann nicht aufgerufen werden, und der Interpreter sagt Ihnen dies. Um die Klasse aufzurufen, die Sie in Ihrer Datei definiert haben, verwenden Sie einfach:

from project.handlers.AccountHandler import AccountHandler 
# Alternately 
# from project.handler import AccountHandler 
# AccountHandler.AccountHandler() # will also work. 
+0

'' AccountHandler ist der Name des Moduls in diesem Fall, AccountHandler.py ist der Name der Datei.' ' –

+0

* Chuckles * @Laurence - pedantische Notiz vermerkt. Ist das neue Wort besser? (Und danke!) –

+0

Danke! Funktioniert! Wie kann ich All-Klassen/Handler in das Handler-Modul importieren? – magegu

0

Sie müssen init.py-__init__.py

+1

Er hatte "__init __. Py". Markdown hatte die Unterstriche gerade als Formatierung interpretiert. –

+0

Danke, ich habe die Formatierung nicht bemerkt. – Velociraptors