Aktualisiert Problem gelöst, habe ich ein Design-Problem hier.Python-Importfehler, scheint wie rekursiver Import, aber kann nicht auf diese Weise beheben
Das Verzeichnis sieht wie folgt aus:
/view
|-__init__.py
|-quiz.py
|-test.py
|-user.py
Und das Problem ist, dass in quiz.py
, ich class
von test
importieren. und in test.py
importiere ich eine class
von quiz
.
Aktualisiert: Ich änderte import
aber es ist immer noch ein AttributeError
Der Code wie folgt:
quiz.py
#ignore some imports here
import test
from user import User
class Quiz(Document):
creator = ReferenceField(User, reverse_delete_rule=CASCADE)
info = GenericEmbeddedDocumentField("QuizInfo")
description = StringField(max_length=100)
attachment = GenericEmbeddedDocumentField("QuizAttach")
correctanswer = GenericEmbeddedDocumentField("QuizAnswer")
wronganswer = GenericEmbeddedDocumentField("QuizAnswer")
manualdifficulty= FloatField(min_value=0, max_value=1)
autodifficulty = FloatField(min_value=0, max_value=1)
checkout = GenericEmbeddedDocumentField("QuizCheckcout")
tag = ListField(StringField(max_length=20))
#ignore some codes here
class QuizCheckout(EmbeddedDocument):
time = DateTimeField()
type = IntField()
description = StringField()
test = ReferenceField(test.Test, reverse_delete_rule=CASCADE)
test.py
import quiz
class Test(Document):
createdate = DateTimeField() #Create datetime
description = StringField() #decription of this test
takennumber = IntField() #the number of students who may take this test
quiz = GenericEmbeddedDocumentField('TestQuiz')
class TestQuiz(EmbeddedDocument):
quiz = ListField(ReferenceField(quiz.Quiz, reverse_delete_rule=CASCADE))
#Reference to Quiz, if Quiz is deleted, this reference will be deleted too.
correct = IntField()
#how many students got this right
und der Fehler ist
Exception Type: AttributeError Exception
Value: 'module' object has no attribute 'Quiz'
Zuerst dachte ich, dass vielleicht ein rekursive Problem, aber ich finde nur, dass ich import
in Funktionen bewegen konnte rekursive Import zu vermeiden, aber es gibt keine Funktionen hier, und ich versuche, Verschieben Sie import
in Klasse, es funktioniert nicht.
Gibt es eine Möglichkeit, diese Definition in einer separaten Datei zu behalten?
mögliche Duplikate von [zirkuläre (oder zyklische) Importe in Python] (http://stackoverflow.com/questions/ 744373/circular-or-cyclic-imports-in-python) – simonzack