Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyelesaikan Ketergantungan Pekeliling dalam Python dengan Dua Kelas Bergantung?

Bagaimana untuk Menyelesaikan Ketergantungan Pekeliling dalam Python dengan Dua Kelas Bergantung?

Patricia Arquette
Patricia Arquetteasal
2024-10-19 16:33:01954semak imbas

How to Resolve Circular Dependencies in Python with Two Dependent Classes?

Kebergantungan Pekeliling dalam Python dengan Dua Kelas

Dalam Python, anda mungkin menghadapi isu pergantungan bulat apabila dua modul saling mengimport antara satu sama lain. Sebagai contoh, pertimbangkan anda mempunyai dua fail, node.py dan path.py, masing-masing mentakrifkan kelas Node dan Path.

Pada asalnya, path.py mengimport Node menggunakan daripada import node.py *. Walau bagaimanapun, selepas menambah kaedah baharu dalam Node yang menggunakan Path, anda menghadapi pengecualian semasa mengimport path.py, yang menunjukkan bahawa Node tidak ditentukan.

Untuk menyelesaikan pergantungan bulat ini, pertimbangkan pendekatan berikut:

Satu pilihan ialah mengimport hanya satu modul (dalam kes ini, path.py) dalam fungsi/kaedah khusus modul lain (node.py) di mana ia diperlukan. Pendekatan ini berfungsi dengan baik jika anda memerlukan pergantungan hanya dalam bilangan fungsi yang terhad:

<code class="python"># in node.py
from path import Path

class Node:
    ...

# in path.py
class Path:
    def method_needs_node():
        from node import Node
        n = Node()
        ...</code>

Dengan mengimport node.py hanya dalam kaedah method_needs_node(), anda mengelakkan isu pergantungan bulat.

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

Kenyataan:
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