Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menaip Petunjuk Kelas Melampirkan Kaedah dalam Python?

Bagaimanakah Saya Boleh Menaip Petunjuk Kelas Melampirkan Kaedah dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-12-19 11:17:09601semak imbas

How Can I Type Hint a Method's Enclosing Class in Python?

Taip Mengisyaratkan Kaedah dengan Jenis Kelas Melampirkan

Dalam Python, mewakili jenis kelas melampirkan kaedah boleh dicapai melalui pelbagai kaedah bergantung pada versi Python.

Python 3.7 dengan 'daripada masa hadapan anotasi import'

Dengan mendayakan ciri "penilaian tertunda bagi anotasi" dengan daripada anotasi import __future__, anotasi boleh disimpan sebagai rentetan dan dinilai secara tidak segerak.

from __future__ import annotations

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

Python 3.11 dengan 'dari menaip import Self'

Python 3.11 memperkenalkan jenis Self untuk mewakili jenis kelas yang disertakan.

from typing import Self

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

Python <3.7

Untuk versi Python sebelum 3.7, rentetan digunakan untuk menunjukkan kelas yang disertakan jenis.

class Position:
    def __add__(self, other: 'Position') -> 'Position':
        ...<p><strong>Mengendalikan Rujukan Hadapan</strong></p>
<p>PEP 484 menentukan bahawa rujukan hadapan harus diwakili sebagai rentetan sehingga ia sepenuhnya ditakrifkan.</p>
<pre class="brush:php;toolbar:false">class Tree:
    def __init__(self, left: 'Tree', right: 'Tree'):
        ...

Alternatif

Elakkan menggunakan takrifan tiruan kelas yang dilampirkan atau menampal monyet kelas untuk menambah anotasi, kerana pendekatan ini boleh mengakibatkan anotasi yang salah tingkah laku.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menaip Petunjuk Kelas Melampirkan Kaedah 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