Bagaimana untuk Menyelesaikan Isu Ketergantungan Pekeliling dalam Python?

Linda Hamilton
Lepaskan: 2024-10-19 16:37:01
asal
211 orang telah melayarinya

How to Resolve Circular Dependency Issues in Python?

Resolusi Ketergantungan Pekeliling dalam Python

Dalam Python, adalah mungkin untuk menghadapi kebergantungan bulat apabila modul bergantung pada satu sama lain untuk definisinya. Satu senario sedemikian wujud apabila dua fail, node.py dan path.py, mentakrifkan kelas Node dan Path, masing-masing, dengan masing-masing merujuk yang lain.

Pada mulanya, path.py mengimport node.py untuk mengakses Node objek. Walau bagaimanapun, pengubahsuaian baru-baru ini memperkenalkan kaedah dalam Node yang merujuk objek Path. Ini mencipta kebergantungan bulat, membawa kepada pengecualian semasa mengimport path.py.

Terdapat beberapa pendekatan untuk menyelesaikan kebergantungan bulat:

1. Rujukan Hadapan:

Gunakan rujukan hadapan dalam satu modul untuk mengisytiharkan nama kelas modul lain tanpa実際にmengimportnya. Dalam kes ini, path.py akan mengisytiharkan kelas Node dengan rujukan hadapan:

from typing import ForwardRef

Node = ForwardRef("Node")

class Path:
    def method_needs_node(self, node: Node):
        ...
Salin selepas log masuk

2. Import Malas:

Import modul yang diperlukan hanya apabila ia diperlukan dalam fungsi. Ini amat sesuai apabila kebergantungan diperlukan hanya dalam satu atau beberapa fungsi:

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

# in path.py
class Path:
  def method_needs_node(): 
    from node import Node
    n = Node()
    ...
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Ketergantungan Pekeliling dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!