Ich habe vier verschiedene Dateien mit dem Namen: Haupt, Vektor, Entität und Physik. Ich werde nicht den gesamten Code veröffentlichen, sondern nur die Importe, da ich denke, dass dort der Fehler liegt. (Wenn du willst, kann ich mehr posten)
Main:
import time
from entity import Ent
from vector import Vect
#the rest just creates an entity and prints the result of movement
Entität:
from vector import Vect
from physics import Physics
class Ent:
#holds vector information and id
def tick(self, dt):
#this is where physics changes the velocity and position vectors
Vektor:
from math import *
class Vect:
#holds i, j, k, and does vector math
Physik:
from entity import Ent
class Physics:
#physics class gets an entity and does physics calculations on it.
Ich starte dann von main.py und erhalte die folgende Fehlermeldung:
Traceback (most recent call last): File "main.py", line 2, in <module> from entity import Ent File ".../entity.py", line 5, in <module> from physics import Physics File ".../physics.py", line 2, in <module> from entity import Ent ImportError: cannot import name Ent
Ich bin sehr neu in Python, habe aber lange mit C ++ gearbeitet. Ich vermute, dass der Fehler auf das zweimalige Importieren einer Entität zurückzuführen ist, einmal in der Haupt- und später in der Physik, aber ich kenne keine Problemumgehung. Kann jemand helfen?
from <module> import <name>
, oder from <modlue> import *
. Besser unter dem Modul-Namespace importieren, um zu verhindern, dass identisch benannte Referenzen überschrieben werden.
Entity
und Vector
anstelle von Ent
und Vect
gibt es keinen Grund, solche Namen zu kürzen. Und ja, benutze import vector
und dann x = vector.Vector(0,0,0)
.