Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Menaip Petunjuk Kaedah dengan Jenis Kelas Melampirkan dalam Python?

Bagaimana Menaip Petunjuk Kaedah dengan Jenis Kelas Melampirkan dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 19:04:10805semak imbas

How to Type Hint a Method with the Enclosing Class Type in Python?

Bagaimanakah saya Boleh Menaip Petunjuk Kaedah dengan Jenis Kelas Terlampir?

Petua jenis digunakan dalam Python untuk menunjukkan jenis pembolehubah yang dijangka atau nilai pulangan fungsi. Mereka menyediakan cara untuk mendokumentasikan gelagat kod yang dimaksudkan dan boleh membantu menangkap ralat lebih awal.

Pernyataan Masalah:

Anda mempunyai kod berikut dalam Python 3:

class Position:

    def __init__(self, x: int, y: int):
        self.x = x
        self.y = y

    def __add__(self, other: Position) -> Position:
        return Position(self.x + other.x, self.y + other.y)

Walau bagaimanapun, editor anda (PyCharm) membenderakan ralat, menunjukkan bahawa rujukan kepada Kedudukan dalam pembayang jenis daripada __add__ tidak boleh diselesaikan. Ini menimbulkan soalan: Bagaimanakah anda boleh menentukan bahawa jenis pemulangan hendaklah daripada jenis Kedudukan?

Penyelesaian:

Dalam Python, terdapat tiga pendekatan utama untuk menaip pembayang kaedah dengan jenis kelas yang disertakan, bergantung pada versi Python yang anda gunakan:

Python 3.11 :

from typing import Self

class Position:
    def __add__(self, other: Self) -> Self:
        ...

Python 3.7 dengan dari anotasi import __future__:

from __future__ import annotations

class Position:
    def __add__(self, other: Position) -> Position:
        ...

Python 3.6 dan Terdahulu:

class Position:
    def __add__(self, other: 'Position') -> 'Position':
        ...

Penjelasan:

  • Python 3.11 : Memperkenalkan anotasi jenis baharu, Self, direka khusus untuk merujuk jenis lampiran kelas.
  • Python 3.7 dengan anotasi import dari __future__: Mendayakan penilaian yang ditangguhkan bagi anotasi jenis, menyimpannya sebagai rentetan sehingga modul dimuatkan sepenuhnya.
  • Python 3.6 dan Terdahulu: Menggunakan perwakilan rentetan nama kelas dalam pembayang jenis.

Keperluan Pra-Kompilasi:

Dalam versi Python sebelum 3.7, penggunaan rentetan dalam pembayang jenis memerlukan kelas tersebut dirujuk ditakrifkan sebelum penggunaannya dalam anotasi jenis. Jika tidak, anda akan menghadapi NameError.

Pertimbangan:

  • Menggunakan Diri lebih diutamakan dalam Python 3.11 kerana ia menyediakan cara yang lebih jelas dan boleh dibaca untuk merujuk jenis lampiran.
  • Dalam Python 3.7 dan lebih baharu, daripada import __future__ anotasi boleh meningkatkan prestasi kod yang mengimport modul penaipan dengan ketara.
  • Dalam versi Python sebelum 3.6, pendekatan berasaskan rentetan ialah satu-satunya pilihan untuk menaip membayangkan kelas yang disertakan.

Ingat, pembayang jenis adalah pilihan, tetapi ia boleh meningkatkan kebolehbacaan kod, pemeriksaan ralat dan kebolehselenggaraan dengan ketara.

Atas ialah kandungan terperinci Bagaimana Menaip Petunjuk Kaedah dengan Jenis Kelas Melampirkan 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