Défi :
En Python, lorsque vous tapez une méthode qui attend une instance de la classe englobante comme argument et renvoie une instance de la même classe, vous pouvez rencontrer des messages d'erreur de votre éditeur ou l'achèvement du code. Ce problème vient du fait que la classe peut ne pas être entièrement définie au moment de l'indication de type.
Solution :
Pour résoudre ce problème, envisagez les options suivantes :
Pour les versions Python 3.11 et ultérieures, utilisez from en tapant import Self pour annoter votre méthode comme ceci :
from typing import Self class Position: def __add__(self, other: Self) -> Self: ...
Activez l'évaluation différée des annotations en incluant from __future__ import annotations au début de votre module. Cela vous permet de saisir un indice en utilisant le nom de la classe :
from __future__ import annotations class Position: def __add__(self, other: Position) -> Position: ...
Pour les versions Python inférieures à 3.7, utilisez une chaîne pour représenter la classe englobante dans vos indications de type :
class Position: def __add__(self, other: 'Position') -> 'Position': ...Limitations
Lors de l'utilisation d'une chaîne peut fonctionner avec la complétion de code, il est important de noter que cette approche n'est pas entièrement prise en charge par toutes les versions de Python et peut entraîner des problèmes d'analyse statique tools.
Approche recommandée
Pour des résultats optimaux, il est recommandé d'utiliser from typing import Self dans Python 3.11 ou from __future__ import annotations dans Python 3.7 si disponible. Cela garantit que les indications de type sont gérées correctement et sont compatibles avec les dernières fonctionnalités du langage.
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!