Mam cztery różne pliki o nazwie: main, vector, byt i fizyka. Nie opublikuję całego kodu, tylko import, ponieważ myślę, że tam właśnie jest błąd. (Jeśli chcesz, mogę dodać więcej)
Główny:
import time
from entity import Ent
from vector import Vect
#the rest just creates an entity and prints the result of movement
Jednostka:
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
Wektor:
from math import *
class Vect:
#holds i, j, k, and does vector math
Fizyka:
from entity import Ent
class Physics:
#physics class gets an entity and does physics calculations on it.
Następnie uruchamiam z main.py i pojawia się następujący błąd:
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
Jestem bardzo nowy w Pythonie, ale od dłuższego czasu pracuję z C ++. Zgaduję, że błąd wynika z dwukrotnego importowania bytu, raz głównego, a później fizyki, ale nie znam obejścia. Czy ktoś może pomóc?
from <module> import <name>
, lub from <modlue> import *
. Lepiej importować w obszarze nazw modułów, aby uniknąć ryzyka zastąpienia referencji o identycznych nazwach.
Entity
i Vector
zamiast Ent
i Vect
nie ma powodu, aby skracać takie nazwiska. I tak, użyj import vector
i wtedy x = vector.Vector(0,0,0)
.