Comment conserver les indices de type en Python avec les importations cycliques ?

Mary-Kate Olsen
Libérer: 2024-10-23 13:04:01
original
759 Les gens l'ont consulté

How to Maintain Type Hints in Python with Cyclic Imports?

Maintenir les indices de type en Python avec des importations cycliques

Lorsque vous travaillez avec de grandes classes Python, il peut être avantageux de les diviser en plusieurs fichiers pour une meilleure organisation et maintenabilité. Cependant, y parvenir tout en préservant les indications de type peut s'avérer difficile en raison d'importations cycliques potentielles.

Une approche consiste à utiliser des annotations de type dans la classe mixin qui font référence à la classe principale. Cependant, cela peut conduire à des importations circulaires qui ne sont pas autorisées en Python.

Pour contourner ce problème, plusieurs solutions peuvent être utilisées :

  • Blocs de code de garde avec 'TYPE_CHECKING' :

    • Entourez le code annoté par type dans la classe mixin dans une instruction if qui vérifie la constante 'TYPE_CHECKING'.
    • Cette constante est définie sur Vrai lors de la vérification du type (par exemple, par des outils comme mypy) mais est Faux au moment de l'exécution, désactivant efficacement l'importation qui autrement provoquerait la dépendance circulaire.
    • Cependant, cela nécessite d'annoter explicitement l'indice de type sous forme de chaîne, comme les symboles ne sont pas disponibles au moment de l'exécution.
  • Utiliser les déclarations directes avec les annotations d'importation « from futur » :

    • Dans Python 3.7, cette importation permet à toutes les annotations de type d'être représentées sous forme de chaînes, éliminant ainsi le besoin d'annotations de chaîne explicites et améliorant la lisibilité.
    • Notez que toutes les indications de type deviennent des chaînes et ne sont pas évaluées au moment de l'exécution. , affectant potentiellement le comportement du code.
  • Envisagez une approche de classe de base abstraite (ABC) :

    • Mypy recommande de créer un ABC dont héritent à la fois la classe principale et le mixin.
    • Cette approche peut être plus adaptée aux projets plus importants où la structure du code et la maintenabilité sont d'une importance primordiale.

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!