Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
python:circular_import [2022/04/11 14:35] root angelegt |
python:circular_import [2022/04/11 15:43] (aktuell) root [Circular Import wegen Typing] |
||
---|---|---|---|
Zeile 21: | Zeile 21: | ||
* damit gibt es keinen Kreis mehr | * damit gibt es keinen Kreis mehr | ||
+ | |||
+ | ====== Circular Import wegen Typing ====== | ||
+ | |||
+ | * kann umgangen werden in dem das Prüfen der Typ-Klassen erst nach dem laden der kompletten Module erfolgt | ||
+ | * das importieren der Pakete/ | ||
+ | * notwendig da sonst bereits durch den import (der Interpreter weiß ja nicht das es nur für Type-Annotation geladen wird) der Circular Error entsteht | ||
+ | |||
+ | |||
+ | <sxh python> | ||
+ | from __future__ import annotation | ||
+ | from typing import TYPE_CHECKING | ||
+ | |||
+ | if TYPE_CHECKING: | ||
+ | | ||
+ | |||
+ | rest of code | ||
+ | </ | ||
+ | |||
+ | * Der Import von annotations von < | ||
+ | * ab Python 3.10 ist das Standart-Verhalten und nicht mehr notwendig | ||
+ | * TYPE_CHECKING ist eine Konstante, die nur dann True ist wenn Typen geprüft werden, das heißt die Bibliothek wird auch nur in diesem Moment geladen und verursacht somit keinen Circular Import | ||