Tengo cuatro archivos diferentes llamados: principal, vector, entidad y física. No publicaré todo el código, solo las importaciones, porque creo que ahí es donde está el error. (Si quieres, puedo publicar más)
Principal:
import time
from entity import Ent
from vector import Vect
#the rest just creates an entity and prints the result of movement
Entidad:
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
Vector:
from math import *
class Vect:
#holds i, j, k, and does vector math
Física:
from entity import Ent
class Physics:
#physics class gets an entity and does physics calculations on it.
Luego ejecuto desde main.py y aparece el siguiente error:
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
Soy muy nuevo en Python pero he trabajado con C ++ durante mucho tiempo. Supongo que el error se debe a la importación de la entidad dos veces, una vez en main y luego en física, pero no conozco una solución alternativa. ¿Alguien puede ayudar?
from <module> import <name>
, o from <modlue> import *
. Es mejor importar bajo el espacio de nombres del módulo para evitar la posibilidad de sobrescribir referencias con nombres idénticos.
Entity
y en Vector
lugar deEnt
y Vect
, no hay razón para acortar esos nombres. Y sí, usa import vector
y luego x = vector.Vector(0,0,0)
.