首页 > 解决方案 > mypy 有什么方法可以支持函数内的实例检查吗?

问题描述

有什么方法可以支持从函数mypy进行实例检查?

我知道对复杂类型检查isinstance的支持。出于说明目的,我将以下模块作为最小示例:

from typing import Any, Union

def is_str(argument: Any) -> bool:
    return True if isinstance(argument, str) else False

def my_string_function(input_str: str):
    print(input_str)

def my_string_and_int_function(argument: Union[str, int]):

    if is_str(argument):
        my_string_function(argument)

    if isinstance(argument, str):
        my_string_function(argument)

现在,如果我运行 mypy,我会在以下第一个(不是第二个!)函数调用中my_string_function收到以下错误my_string_and_int_function

错误:“my_string_function”的参数 1 具有不兼容的类型“Union[str, int]”;预期的“str”

也许这更适合 mypy 问题跟踪器,但我不确定我是否想先在此处发布。

标签: pythontype-hintingmypystatic-typingisinstance

解决方案


推荐阅读