Heim > Backend-Entwicklung > Python-Tutorial > Wie tippe ich eine Methode mit dem einschließenden Klassentyp in Python ein?

Wie tippe ich eine Methode mit dem einschließenden Klassentyp in Python ein?

Mary-Kate Olsen
Freigeben: 2024-12-27 19:04:10
Original
804 Leute haben es durchsucht

How to Type Hint a Method with the Enclosing Class Type in Python?

Wie kann ich eine Methode mit dem Typ der einschließenden Klasse angeben?

Typhinweise werden in Python zur Angabe verwendet der erwartete Typ einer Variablen oder der Rückgabewert einer Funktion. Sie bieten eine Möglichkeit, das beabsichtigte Verhalten des Codes zu dokumentieren und können dabei helfen, Fehler frühzeitig zu erkennen.

Problemstellung:

Sie haben den folgenden Code in 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)
Nach dem Login kopieren

Ihr Editor (PyCharm) meldet jedoch einen Fehler, der darauf hinweist, dass der Verweis auf Position im Typhinweis von __add__ nicht aufgelöst werden kann. Dies wirft die Frage auf: Wie können Sie angeben, dass der Rückgabetyp vom Typ Position sein soll?

Lösung:

In Python gibt es drei Hauptansätze für Typhinweise eine Methode mit dem Typ ihrer umschließenden Klasse, abhängig von der von Ihnen verwendeten Python-Version:

Python 3.11 :

from typing import Self

class Position:
    def __add__(self, other: Self) -> Self:
        ...
Nach dem Login kopieren

Python 3.7 mit from __future__ Importanmerkungen:

from __future__ import annotations

class Position:
    def __add__(self, other: Position) -> Position:
        ...
Nach dem Login kopieren

Python 3.6 und Früher:

class Position:
    def __add__(self, other: 'Position') -> 'Position':
        ...
Nach dem Login kopieren

Erklärung:

  • Python 3.11: Führt eine neue Typanmerkung ein, Self, die speziell entwickelt wurde zur Angabe der Umschließungsart Klasse.
  • Python 3.7 mit from __future__ Importanmerkungen: Ermöglicht die verschobene Auswertung von Typanmerkungen und speichert sie als Zeichenfolgen, bis das Modul vollständig geladen ist.
  • Python 3.6 und früher: Verwendet eine Zeichenfolgendarstellung des Klassennamens im Typ Hinweis.

Anforderung vor der Kompilierung:

In Python-Versionen vor 3.7 erfordert die Verwendung von Zeichenfolgen in Typhinweisen, dass die referenzierte Klasse definiert ist vor seiner Verwendung in der Typanmerkung. Andernfalls wird ein NameError angezeigt.

Überlegungen:

  • Die Verwendung von Self wird in Python 3.11 bevorzugt, da es eine explizitere und lesbarere Möglichkeit zur Referenzierung bietet einschließender Typ.
  • In Python 3.7 und höher, aus __future__ import Anmerkungen können die Leistung von Code, der das Typisierungsmodul importiert, erheblich verbessern.
  • In Python-Versionen vor 3.6 ist der stringbasierte Ansatz die einzige Option für Typhinweise auf die umschließende Klasse.

Denken Sie daran, dass Typhinweise optional sind, aber sie können die Lesbarkeit des Codes, die Fehlerprüfung und die Wartbarkeit erheblich verbessern.

Das obige ist der detaillierte Inhalt vonWie tippe ich eine Methode mit dem einschließenden Klassentyp in Python ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage