Python Type Hinting ohne zyklische Importe
Problem:
Das Importieren von Modulen mit zyklischen Abhängigkeiten führt dazu Laufzeitausnahmen, wenn Typhinweise in Verbindung mit Mixin-Klassen verwendet werden.
Details:
In Python 3.4 ist eine Klasse in zwei Dateien aufgeteilt (main.py und mymixin .py), wobei mymixin.py eine Mixin-Klasse enthält, die von der Hauptklasse in main.py erbt (d. h. Klasse Main(object, MyMixin):). Typhinweise in den Methoden von MyMixin erfordern die Angabe des Rückgabetyps als „Main“, was zu einem zyklischen Importproblem führt.
Python 3.4-Lösung:
Um den zyklischen Import zu umgehen Beim Typhinweis wird ein benutzerdefinierter Ansatz mit einer Vorwärtsdeklaration verwendet. Durch die Verwendung der Konstante „TYPE_CHECKING“ aus dem Modul „typing“ wird die Importanweisung innerhalb des Typannotationsblocks zur Laufzeit ignoriert. Die Typanmerkung „Main“ wird auch in eine Zeichenfolge umgewandelt, um sie weiterzudeklarieren.
Python 3.7-Lösung (PEP 563):
Verwendung von „from Mit der Importanweisung von Futureimport annotations werden alle Typanmerkungen zu Zeichenfolgen und werden während der Laufzeitauswertung übersprungen, wodurch die Syntax der Forward-Deklaration sauberer wird.
Trotz dieser Problemumgehungen kann die Verwendung von Mixins mit Typhinweisen immer noch eine Umstrukturierung erfordern, um dies sicherzustellen dass sowohl die PyCharm- als auch die Mypy-Typprüfung wie erwartet funktioniert. Mypy empfiehlt, ein ABC zu erstellen, von dem sowohl die Haupt- als auch die Mixin-Klasse erben.
Das obige ist der detaillierte Inhalt vonWie löse ich zyklische Importprobleme für Typhinweise mit Mixin-Klassen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!