with
구문으로 정의 된 변수에 대한 유형 힌트를 정의 할 수 있습니까 ?
with example() as x:
print(x)
위의 힌트를 입력 x
하여 str
(예를 들어) 라고 말하고 싶습니다 .
내가 찾은 유일한 해결 방법은 중간 변수를 사용하는 것이지만 해키 느낌입니다.
with example() as x:
y: str = x
print(y)
타이핑 문서 에서 예제를 찾을 수 없습니다 .
답변
Python 3.6에서 구현 된 PEP 526을 사용하면 변수에 주석을 달 수 있습니다. 예를 들어
x: str
with example() as x:
[...]
또는
with example() as x:
x: str
[...]
답변
일반적으로 유형 주석은 API 경계에 배치됩니다. 이 경우 유형은에서 유추되어야합니다 example.__enter__
. 해당 함수가 유형을 선언하지 않으면 해결책은 유형 검사기가 해당 유형을 유추하는 데 도움이되도록 해당 스텁 파일 을 작성하는 것 입니다.
특히 이것은 가져온 .pyi
모듈과 동일한 스템을 가진 파일을 작성한다는 의미 Example
입니다. 그런 다음 다음 코드를 추가 할 수 있습니다.
class Example:
def __enter__(self) -> str: ...
def __exit__(self, exc_type, exc_value, exc_traceback) -> None: ...