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': ...
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: ...
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'): ...
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!