Petua Jenis: Menyelesaikan Kebergantungan Pekeliling
Dalam Python, kebergantungan bulat boleh timbul apabila dua kelas saling merujuk satu sama lain dalam pembayang jenisnya. Ini mengakibatkan NameError apabila cuba membuat instantiate salah satu kelas.
Pertimbangkan contoh berikut:
<code class="python">class Server: def register_client(self, client: Client) pass class Client: def __init__(self, server: Server): server.register_client(self)</code>
Percubaan untuk membuat instantiate Klien akan gagal dengan NameError: name 'Client' is not ditakrifkan.
Menggunakan Rujukan Hadapan
Salah satu cara untuk menyelesaikan pergantungan bulat ini ialah menggunakan rujukan hadapan dalam pembayang jenis. Ini dilakukan dengan menyediakan nama rentetan untuk kelas yang belum ditakrifkan lagi:
<code class="python">class Server: def register_client(self, client: 'Client') pass</code>
Menangguhkan Penghuraian Anotasi
Penyelesaian lain yang diperkenalkan dalam Python 3.7 adalah untuk menangguhkan penghuraian masa jalan bagi anotasi sepenuhnya. Ini dicapai dengan menambahkan import berikut di bahagian atas modul:
<code class="python">from __future__ import annotations</code>
Dengan penghuraian anotasi ditangguhkan, anotasi disimpan sebagai perwakilan rentetan bagi pokok sintaks abstrak (AST) untuk ungkapan. Anda boleh menggunakan typing.get_type_hints() untuk menyelesaikan anotasi ini dan menyelesaikan rujukan hadapan seperti yang digunakan dalam contoh sebelumnya.
Untuk butiran lanjut, rujuk PEP 563: Penilaian Ditangguhkan Anotasi.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ketergantungan Pekeliling dalam Petua Jenis Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!