Comment résoudre les problèmes d'importation cyclique pour l'indication de type avec les classes Mixin en Python ?

Linda Hamilton
Libérer: 2024-10-23 13:35:30
original
773 Les gens l'ont consulté

How to Resolve Cyclic Import Issues for Type Hinting with Mixin Classes in Python?

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!