source

파일 또는 파일 유사 개체에 대한 힌트를 입력하십시오.

gigabyte 2022. 9. 4. 15:28
반응형

파일 또는 파일 유사 개체에 대한 힌트를 입력하십시오.

Python에서 파일이나 파일 같은 오브젝트에 사용할 수 있는 올바른 유형의 힌트가 있습니까?예를 들어, 이 함수의 반환값을 입력하려면 어떻게 해야 합니까?

def foo() -> ???:
    return open('bar')

다음 중 하나를 사용합니다.typing.TextIO또는typing.BinaryIO텍스트 모드 또는 바이너리 모드로 각각 열려 있는 파일에 대한 형식입니다.

문서에서:

학급 typing.IO

I/O 스트림 유형의 래퍼 네임스페이스입니다.

이것은 범용 유형을 정의합니다.IO[AnyStr]및 에일리어스TextIO그리고.BinaryIO각각에 대해서IO[str]그리고.IO[bytes]이들은 에 의해 반환되는 등의 I/O 스트림 유형을 나타냅니다.open().

간단한 답변:

  • 넌 분명히 말해야 해.그것은from typing import TextIO뿐만 아니라.from typing import *.
  • 사용하다IO어떤 종류의 파일을 지정하지 않고 파일을 의미하다
  • 사용하다TextIO또는BinaryIO종류를 알면
  • 현재 쓰기 또는 인코딩을 위해 열도록 지정할 수 없습니다.

예를 들어 다음과 같습니다.

from typing import BinaryIO

def binf(inf: BinaryIO):
    pass

with open('x') as f:
    binf(f)

(PyCharm의) 검사 오류를 나타냅니다.Expected type 'BinaryIO', got 'TextIO' instead

언급URL : https://stackoverflow.com/questions/38569401/type-hint-for-a-file-or-file-like-object

반응형