Maison >développement back-end >Tutoriel Python >Comment éviter les importations cycliques dans l'indication de type de Python ?
Indication de type en Python sans importations cycliques
Problème :
Lors de la division d'une grande classe dans plusieurs fichiers, les importations cycliques peuvent empêcher le bon fonctionnement des indications de type. Plus précisément, l'importation de la classe « principale » dans une classe mixin crée une dépendance circulaire qui entrave la vérification de type.
Solution :
Pour Python 3.4 :
Utilisez la structure de code suivante :
<code class="python"># main.py import mymixin.py class Main(object, MyMixin): def func1(self, xxx): ... # mymixin.py from typing import TYPE_CHECKING if TYPE_CHECKING: from main import Main class MyMixin(object): def func2(self: 'Main', xxx): # Note the string type hint ...</code>
La constante TYPE_CHECKING garantit que l'importation de main.py n'est évaluée que lors de la vérification du type, évitant ainsi l'erreur d'importation cyclique.
Pour Python 3.7 :
Python 3.7 introduit une solution plus élégante :
<code class="python"># main.py import mymixin.py class Main(object, MyMixin): def func1(self, xxx): ... # mymixin.py from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from main import Main class MyMixin(object): def func2(self: Main, xxx): # No need for a string type hint ...</code>
L'importation d'annotations future permet des indications sur le type de chaîne et évite de les évaluer au moment de l'exécution.
Considérations supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!