Indice de type Python sans importations cycliques
Problème :
L'importation de modules avec des dépendances cycliques introduit exceptions d'exécution lorsque l'indication de type est utilisée en conjonction avec des classes mixin.
Détails :
Dans Python 3.4, une classe est divisée en deux fichiers (main.py et mymixin .py), où mymixin.py contient une classe mixin qui hérite de la classe principale dans main.py (c'est-à-dire la classe Main(object, MyMixin) :). L'indication de type dans les méthodes de MyMixin nécessite de spécifier le type de retour comme « Principal », ce qui entraîne un problème d'importation cyclique.
Solution Python 3.4 :
Pour contourner l'importation cyclique pendant indice de type, une approche personnalisée utilisant une déclaration directe est utilisée. En utilisant la constante 'TYPE_CHECKING' du module 'typing', l'instruction d'importation dans le bloc d'annotation de type est ignorée lors de l'exécution. L'annotation de type 'Main' est également convertie en chaîne pour la déclarer en avant.
Solution Python 3.7 (PEP 563) :
Utilisation du 'from future import annotations' import instruction, toutes les annotations de type deviennent des chaînes et sont ignorées lors de l'évaluation à l'exécution, ce qui rend la syntaxe de la déclaration directe plus propre.
Malgré ces solutions de contournement, l'utilisation de mixins avec des indications de type peut encore nécessiter une restructuration pour garantir que la vérification de type PyCharm et mypy fonctionne comme prévu. Mypy recommande de créer un ABC dont héritent les classes principales et mixin.
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!