Czy jest jakaś poprawna wskazówka dotycząca typu pliku lub obiektu podobnego do pliku w Pythonie? Na przykład, w jaki sposób mógłbym wskazać wartość zwracaną przez tę funkcję?
def foo():
return open('bar')
Czy jest jakaś poprawna wskazówka dotycząca typu pliku lub obiektu podobnego do pliku w Pythonie? Na przykład, w jaki sposób mógłbym wskazać wartość zwracaną przez tę funkcję?
def foo():
return open('bar')
Odpowiedzi:
Użyj typów typing.TextIO
lub typing.BinaryIO
dla plików otwieranych odpowiednio w trybie tekstowym lub binarnym.
Z dokumentów :
klasa
typing.IO
Przestrzeń nazw opakowania dla typów strumieni we / wy.
Definiuje typ ogólny
IO[AnyStr]
i aliasyTextIO
orazBinaryIO
odpowiednio dlaIO[str]
iIO[bytes]
. Reprezentują one typy strumieni we / wy, takie jak zwracane przezopen()
.
def f() -> IO: return open('test')
podaje „Oczekiwany typ IO”, zamiast tego otrzymuje „TextIOWrapper [str]” w PyCharm.
IO[str]
?
Krótka odpowiedź:
from typing import TextIO
nie jest sprawiedliwe from typing import *
.IO
do oznaczania pliku bez określania jego rodzajuTextIO
lub BinaryIO
jeśli znasz typJako przykład:
from typing import BinaryIO
def binf(inf: BinaryIO):
pass
with open('x') as f:
binf(f)
daje błąd inspekcji (w PyCharm) wynoszący Expected type 'BinaryIO', got 'TextIO' instead