Comment résoudre les dépendances circulaires en Python ?

Patricia Arquette
Libérer: 2024-10-21 21:49:03
original
881 Les gens l'ont consulté

How to Resolve Circular Dependencies in Python?

Indices de type : résolution des dépendances circulaires en Python

En Python, des dépendances circulaires peuvent survenir lorsque plusieurs classes se réfèrent les unes aux autres. Cela peut entraîner des erreurs d'exécution en raison de noms non définis. Considérez le code suivant :

class Server:
    def register_client(self, client: Client):
        pass


class Client:
    def __init__(self, server: Server):
        server.register_client(self)
Copier après la connexion

Ici, le serveur dépend du client et vice versa. Lorsque Python tente d'exécuter ce code, il génère une erreur NameError : le nom 'Client' n'est pas défini.

Pour résoudre ce problème, une solution consiste à utiliser des références avancées. Dans Python 3.6 et versions antérieures, cela peut être réalisé en utilisant un nom de chaîne pour la classe non encore définie :

class Server:
    def register_client(self, client: 'Client'):
        pass
Copier après la connexion

Cela informe le vérificateur de type que Client est une classe qui sera définie ultérieurement.

Dans Python 3.7 ou version ultérieure, une approche alternative consiste à utiliser l'importation __future__.annotations au début du module :

from __future__ import annotations

class Server:
    def register_client(self, client: Client):
        pass
Copier après la connexion

Cela retarde l'analyse à l'exécution des annotations et leur permet d'être stockés sous forme de représentations sous forme de chaîne. Les références directes peuvent toujours être utilisées dans ce contexte.

En employant ces techniques, vous pouvez résoudre les dépendances circulaires et garantir que votre code s'exécute sans erreurs.

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!