„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie löst man Probleme mit der zirkulären Abhängigkeit in Python?

Wie löst man Probleme mit der zirkulären Abhängigkeit in Python?

Veröffentlicht am 08.11.2024
Durchsuche:730

How to Resolve Circular Dependency Issues in Python?

Zirkuläre Abhängigkeitsauflösung in Python

In Python kann es zu zirkulären Abhängigkeiten kommen, wenn Module bei ihrer Definition aufeinander angewiesen sind. Ein solches Szenario liegt vor, wenn zwei Dateien, node.py und path.py, die Klassen Node bzw. Path definieren, wobei jede auf die andere verweist.

Zunächst importierte path.py node.py, um auf den Node zuzugreifen Objekt. Durch eine kürzlich durchgeführte Änderung wurde jedoch eine Methode in Node eingeführt, die auf das Path-Objekt verweist. Dadurch entstand eine zirkuläre Abhängigkeit, die beim Importieren von path.py zu einer Ausnahme führte.

Es gibt mehrere Ansätze, zirkuläre Abhängigkeiten aufzulösen:

1. Vorwärtsreferenz:

Verwenden Sie eine Vorwärtsreferenz in einem Modul, um den Klassennamen des anderen Moduls zu deklarieren, ohne ihn zu importieren. In diesem Fall würde path.py die Node-Klasse mit einer Vorwärtsreferenz deklarieren:

from typing import ForwardRef

Node = ForwardRef("Node")

class Path:
    def method_needs_node(self, node: Node):
        ...

2. Lazy Import:

Importieren Sie das erforderliche Modul nur, wenn es innerhalb einer Funktion benötigt wird. Dies eignet sich besonders, wenn die Abhängigkeit nur in einer oder wenigen Funktionen erforderlich ist:

# in node.py 
from path import Path
class Node 
    ...

# in path.py
class Path:
  def method_needs_node(): 
    from node import Node
    n = Node()
    ...
Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729326978 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3