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.TextIOlub typing.BinaryIOdla plików otwieranych odpowiednio w trybie tekstowym lub binarnym.
Z dokumentów :
klasa
typing.IOPrzestrzeń nazw opakowania dla typów strumieni we / wy.
Definiuje typ ogólny
IO[AnyStr]i aliasyTextIOorazBinaryIOodpowiednio 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 TextIOnie jest sprawiedliwe from typing import *.IOdo oznaczania pliku bez określania jego rodzajuTextIOlub BinaryIOjeś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