Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengelakkan AttributeError dalam Senario Import Bersama dalam Python?

Bagaimana untuk Mengelakkan AttributeError dalam Senario Import Bersama dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-20 13:06:30149semak imbas

How to Avoid AttributeError in Mutual Import Scenarios in Python?

AttributeError: 'modul' Objek Kurang Atribut dalam Senario Import Bersama

Dalam Python, ralat biasa timbul semasa mengendalikan import bersama antara modul. Pertimbangkan contoh berikut:

<code class="python"># a.py
import b

# Functions defined within a.py...

# b.py
import a

# Functions defined within b.py...</code>

Setelah menjalankan a.py, ralat berikut mungkin berlaku:

AttributeError: 'module' object has no attribute 'hi'

Ralat ini menunjukkan bahawa a.py tidak dapat mengakses atribut hi dari modul b.py yang diimport. Untuk memahami sebab di sebalik ralat ini, adalah penting untuk mengenali perangkap pengimportan peringkat tertinggi bersama.

Lazimnya, import bersama tidak digalakkan, kerana ia boleh membawa kepada kebergantungan bulat dan menjadikan kod kurang dapat diselenggara. Sebaliknya, Python mengesyorkan mengimport modul dalam fungsi. Dalam contoh yang diberikan, isu ini boleh diselesaikan dengan mengubah suai a.py dan b.py seperti berikut:

<code class="python"># a.py
def import_b_and_call_hi():
    import b
    b.hi()

# Functions defined within a.py...

# b.py
def hi():
    print("hi")</code>

Kini, apabila a.py dilaksanakan, ia akan mengimport b.py dan memanggil dengan lancar fungsi hi dari dalam fungsi import_b_and_call_hi. Teknik ini memastikan bahawa import bersama tidak menyebabkan sebarang isu pergantungan.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan AttributeError dalam Senario Import Bersama dalam Python?. 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