2016-03-23 15 views
-3

Ich bin mit einer Reihe von Importen in meinem Programm ein paar Probleme hat,Import Reihenfolge in Python 3

In main.py:

from world import * 
from dialogue import * 
from event import * 

In dialogue.py:

from world import * 
from event import * 

Der Klassenbereich ist in world.py definiert. Wenn ich versuche, die Area-Klasse von dialog.py zu verwenden, wird

builtins.NameError: name 'Area' is not defined 
zurückgegeben

Wenn ich die Reihenfolge der Einfuhr in main.py zu

from dialogue import * 
from world import * 
from event import * 

ändern Wenn ich versuche, den Dialog Klasse von world.py zuzugreifen, erhalte ich diese

builtins.NameError: name 'Dialogue' is not defined 

dachte ich den Auftrag von Importen sollte keinen Unterschied gemacht haben? Wie kann ich von allen meinen Dateien auf alle meine Klassen zugreifen?

+4

importieren * aus vielen Modulen ist wahrscheinlich eine sehr schlechte Idee – Bharel

+0

Wenn Sie * müssen * Zugriff absolut alles und wollen nicht die zur Liste Dinge, die Sie brauchen, können Sie einfach denken "Import Welt" und verwenden Sie "world.Area", etc. @Bharel Nein "wahrscheinlich" darüber. Es ist wie .... der Inbegriff von "Import *" ist eine schlechte Idee. – jpmc26

+0

Ich stimme @Bharel zu. Sie sollten versuchen, Welt zu importieren, etc. Können Sie Ihren Code aus der Welt, Dialog und Ereignis veröffentlichen? –

Antwort

0

Die Klasse Area liegt in world.py definiert, aber wenn ich versuche, die Gebietsklasse von dialogue.py zu verwenden, es gibt

Die Art und Weise Sie Ihren Code importieren falsch ist. Von beiden Modulen importieren Sie mit *; Das verwirrt Python, weil beide Module eine Klasse namens Area haben.

Statt mit * (Wild importieren) importieren sie als Module

import dialogue 
import world 
import event 

d1 = world.Dialogue() 
d2 = dialogue.Dialogue()