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() ...
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