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)
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: ...
Python 3.7 mit from __future__ Importanmerkungen:
from __future__ import annotations class Position: def __add__(self, other: Position) -> Position: ...
Python 3.6 und Früher:
class Position: def __add__(self, other: 'Position') -> 'Position': ...
Erklärung:
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:
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!