Maison > développement back-end > Tutoriel Python > Comment puis-je taper un indice sur la classe englobante d'une méthode en Python ?

Comment puis-je taper un indice sur la classe englobante d'une méthode en Python ?

Barbara Streisand
Libérer: 2024-12-19 11:17:09
original
579 Les gens l'ont consulté

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

Type indiquant une méthode avec un type de classe englobante

En Python, représenter le type de la classe englobante d'une méthode peut être obtenu via diverses méthodes en fonction sur la version Python.

Python 3.7 avec 'from future importer des annotations'

En activant la fonctionnalité « évaluation différée des annotations » avec les annotations d'importation from __future__, les annotations peuvent être stockées sous forme de chaînes et évaluées de manière asynchrone.

from __future__ import annotations

class Position:
    def __add__(self, other: 'Position') -> 'Position':
        ...
Copier après la connexion

Python 3.11 avec 'from typing import Self'

Python 3.11 introduit le type Self pour représenter le type de classe englobant.

from typing import Self

class Position:
    def __add__(self, other: Self) -> Self:
        ...
Copier après la connexion

Python <3.7

Pour Versions Python antérieures à 3.7, les chaînes sont utilisées pour indiquer la classe englobante type.

class Position:
    def __add__(self, other: 'Position') -> 'Position':
        ...<p><strong>Gestion des références directes</strong></p>
<p>PEP 484 spécifie que les références directes doivent être représentées sous forme de chaînes jusqu'à ce qu'elles soient entièrement définies.</p>
<pre class="brush:php;toolbar:false">class Tree:
    def __init__(self, left: 'Tree', right: 'Tree'):
        ...
Copier après la connexion

Alternatives

Évitez d'utiliser des définitions factices du en enfermant la classe ou en patchant la classe pour ajouter des annotations, car ces approches peuvent entraîner un comportement d'annotation incorrect.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal