Bagaimana untuk Menyelesaikan Ketergantungan Pekeliling dalam Petua Jenis Python?

Susan Sarandon
Lepaskan: 2024-10-21 21:48:31
asal
555 orang telah melayarinya

How to Resolve Circular Dependencies in Python's Type Hints?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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!