


Comment taper Hint une méthode avec le type de classe englobante en Python ?
Comment puis-je taper un indice sur une méthode avec le type de la classe englobante ?
Les indices de type sont utilisés en Python pour indiquer le type attendu d'une variable ou la valeur de retour d'une fonction. Ils fournissent un moyen de documenter le comportement prévu du code et peuvent aider à détecter les erreurs plus tôt.
Énoncé du problème :
Vous avez le code suivant dans 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)
Cependant, votre éditeur (PyCharm) signale une erreur, indiquant que la référence à Position dans l'indice de type de __add__ ne peut pas être résolu. Cela soulève la question : Comment pouvez-vous spécifier que le type de retour doit être de type Position ?
Solution :
En Python, il existe trois approches principales pour l'indication de type une méthode avec le type de sa classe englobante, selon la version de Python que vous utilisez :
Python 3.11 :
from typing import Self class Position: def __add__(self, other: Self) -> Self: ...
Python 3.7 avec les annotations d'importation from __future__ :
from __future__ import annotations class Position: def __add__(self, other: Position) -> Position: ...
Python 3.6 et Plus tôt :
class Position: def __add__(self, other: 'Position') -> 'Position': ...
Explication :
- Python 3.11 : Introduit une nouvelle annotation de type, Self, spécialement conçue pour référencer le type de boîtier class.
- Python 3.7 avec from __future__ import annotations : Permet l'évaluation différée des annotations de type, en les stockant sous forme de chaînes jusqu'à ce que le module soit complètement chargé.
- Python 3.6 et versions antérieures : Utilise une représentation sous forme de chaîne du nom de la classe dans le type soupçon.
Exigence de pré-compilation :
Dans les versions Python antérieures à 3.7, l'utilisation de chaînes dans les conseils de type nécessite que la classe référencée soit définie avant son utilisation dans l'annotation de type. Sinon, vous rencontrerez une NameError.
Considérations :
- L'utilisation de Self est préférable dans Python 3.11 car elle fournit une manière plus explicite et plus lisible de référencer le type englobant.
- Dans Python 3.7 et versions ultérieures, à partir de l'importation __future__ les annotations peuvent améliorer considérablement les performances du code qui importe le module de saisie.
- Dans les versions Python antérieures à 3.6, l'approche basée sur les chaînes est la seule option pour indiquer la classe englobante.
N'oubliez pas que les astuces de type sont facultatives, mais elles peuvent améliorer considérablement la lisibilité du code, la vérification des erreurs et la maintenabilité.
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!

Pythonusahybridmodelofcompilation et interprétation: 1) thepythoninterpreterCompileSourCodeIntOplatform-indépendantBytecode.2) thepythonvirtualmachine (pvm) there examenesthisbytecode, équilibrage de l'usage de la performance.

Pythonisbothinterpretedand compiled.1) il est composédToByteCodeForportabilityAcrosplatforms.2) theytecodeisthenter interprété, permettant à OrdayNamictypingAndRapidDevelopment, bien que MaybeSlowerSlowerSwower, aisance.

Forloopsareideal quand vous savez que l'immatriculation des adressages a une avance, tandis que ce qui est de savoir si

Forloopsaseesesed whenthenUmberoFitations dissownininadvance, tandis que celle-ci a été utilisé sur les éléments de la dispense

Pythonisnotpurelyinterpreted; itusahybridapproachofbytecocecompilation andruntimeinterpretation.1) pythoncompilessourcecodeintoBytecode, whichStHenexEcutedythepythonVirtualMachine (pvm) .2)

ToconcaténateListSinpythonWithTheSameElements, Utilisation: 1) L'opératorTokeEpDuplicate, 2) ASETTOREMOVEUPLICATION, OR3) ListComprehensionfor pour la réduction de la réduction de la manière dont les directives.

PythonisaninterpretedLanguage, offrant une volonté et une flexibilité de la fin

UseforloopswhenthenUmberoFitationsknowninadvance, andwhileloopswHeniterationsDepenSonacondition.1) forloopsareidealforseenceslikelistsorranges.2) whileLoopsSuitscenarioswheretheloopContiesUnUesUsUlaspecificconditMetmecemet, utilesforUSERIRSURSoralgorititititititititititititititititittorititititititittorititititititititittorititititititititittoritititititititititititititititititittitititititititititititititititititittitititititititititititititititititittitititititititititititititititititittititititititititititititititititittititet


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.
