der ‚Staat‘ Muster OOP Verwendung in Python verbleit mich zu diesem Abhängigkeitsproblem:
StateA
, StateB
und StateC
sind drei Staaten die gleiche Methode der Umsetzung event1
.
StateB
erbt sein Verhalten von StateA
.Lösung zyklische Abhängigkeit mit Python Vererbung
Datei a.py:
#from b import StateB
from c import StateC
class StateA(object):
def event1(self):
return StateC()
print type(StateA().event1())
Datei b.py:
import a
class StateB(a.StateA):
def event1(self):
return self
Datei c.py:
class StateC(object):
def event1(self):
return self
Solange ich brauche keine StateB
in a.py
funktioniert das. Aber was, wenn ich den Typ StateB
in StateA
verwenden möchte?
Importieren StateB
(siehe die erste Zeile in kommentierten a.py
) führt zu diesen zyklischen Abhängigkeitsfehlern:
ImportError: cannot import name StateB
Sie können versuchen, eine lokale Import tun (innen einige spezifische Methode) anstatt es am Anfang der Datei zu importieren. –
Was passiert, wenn Sie den globalen Import für Datei b ändern? –
selbe Fehler, wenn ich den globalen Import auf Datei b innerhalb der Methode StateA.event1() verschieben – Francois