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.
Entityund Vectoranstelle von Entund Vectgibt es keinen Grund, solche Namen zu kürzen. Und ja, benutze import vectorund dann x = vector.Vector(0,0,0).