Können Sie den Typhinweis für eine mit der with
Syntax definierte Variable definieren ?
with example() as x:
print(x)
Ich möchte den obigen Hinweis eingeben, um zu sagen, dass dies x
ein str
(als Beispiel) ist.
Die einzige Lösung, die ich gefunden habe, ist die Verwendung einer Zwischenvariablen, aber das fühlt sich hackig an.
with example() as x:
y: str = x
print(y)
Ich kann kein Beispiel in der Schreibdokumentation finden .
python
python-3.x
type-hinting
Reactgular
quelle
quelle
x
als Rückgabetyp von abzuleitenexample().__enter__()
?x
wenn es sich lediglich um den Rückgabetyp handeltexample.__enter__
? Idealerweise haben Sie diese Methode / Funktion mit Anmerkungen versehen.x
ist nicht der Rückgabewert vonexample
; Es ist der Rückgabewert vonexample().__enter__()
.example
.example.__enter__
Annotieren bedeutet eine Annotation, während Sie bei Ihrem Ansatz an allen Stellen, an denen dieser Kontextmanager verwendet wird, Annotationen vornehmen müssten. Außerdem , wie soll ein Benutzer im Allgemeinen wissen, was der Rückgabetyp einer API überhaupt ist, wenn er nicht bereitgestellt wird?Antworten:
Mit PEP 526, das in Python 3.6 implementiert wurde, können Sie Variablen mit Anmerkungen versehen. Sie können zum Beispiel verwenden
oder
quelle
for
. Tolle Antwort, danke.__enter__
Methode zurückgeben wird, hat die Eingabex
keinen Zweck.mypy
ermöglicht gerne, dass ein Wert eines beliebigen Typs gebunden wirdx
.x
wiestr
in beiden Fällen, abermypy
nicht.Normalerweise werden Typanmerkungen an den API-Grenzen platziert. In diesem Fall sollte der Typ abgeleitet werden
example.__enter__
. Falls diese Funktion keine Typen deklariert, besteht die Lösung darin, eine entsprechende Stub-Datei zu erstellen , damit die Typprüfung auf diesen Typ schließen kann.Dies bedeutet insbesondere, dass eine
.pyi
Datei mit demselben Stamm erstellt wird wie das Modul, aus demExample
importiert wurde. Dann kann der folgende Code hinzugefügt werden:quelle