Maison > Article > développement back-end > Comment résoudre les problèmes d'importation cyclique et utiliser les indices de type dans la division de classe Python ?
Indices de type en Python sans importations cycliques
Les indices de type en Python offrent une aide précieuse pour la complétion du code et la vérification de type statique. Cependant, des problèmes surviennent lorsque l'on tente de diviser une classe en plusieurs fichiers tout en conservant les indications de type en raison des importations cycliques.
Une approche pour résoudre ce problème consiste à introduire une classe de base abstraite (ABC) comme intermédiaire. Cela nécessite de modifier à la fois la classe principale et le fichier mixin :
main.py:
<code class="python">from abc import ABC from mymixin import MyMixinABC class Main(MyMixinABC): def func1(self, xxx): ...</code>
mymixin.py:
<code class="python">import abc class MyMixinABC(abc.ABC): def func2(self: 'MyMixinABC', xxx): ...</code>
En utilisant un ABC, nous établissons un contrat formel entre la classe principale et le mixin. Les indices de type peuvent désormais faire référence avec précision à l'ABC au lieu du nom réel de la classe.
Pour les utilisateurs de Python 3.7, une approche plus concise est possible en utilisant PEP 563 :
main.py :
<code class="python">from __future__ import annotations class Main: def func1(self, xxx): ...</code>
mymixin.py :
<code class="python">from __future__ import annotations class MyMixin: def func2(self, xxx): ...</code>
Ces techniques vous permettent de diviser votre classe en plusieurs fichiers tout en empêchant les importations cycliques et en préservant les avantages de type faisant allusion dans votre code.
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!