参数化的泛型不能与类或实例检查一起使用

时间:2019-06-07 11:06:11

标签: python python-3.x pycharm

我编写了代码,但是在pycharm(2019.1)中收到以下消息: “参数化的泛型不能与类或实例检查一起使用”

    def data_is_valid(data):
        keys_and_types = {
            'comment': (str, type(None)),
            'from_budget': (bool, type(None)),
            'to_member': (int, type(None)),
            'survey_request': (int, type(None)),
        }

        def type_is_valid(test_key, test_value):
            return isinstance(test_value, keys_and_types[test_key])

        type_is_valid('comment', 3)

我真的不太了解此消息。我做错了什么还是pycharm中的错误? 如果我显式键入元组,则错误消失。

def type_is_valid(test_key, test_value):
    return isinstance(test_value, tuple(keys_and_types[test_key]))

screenshot

1 个答案:

答案 0 :(得分:3)

这看起来像是pycharm中的错误,假设您以意外的方式使用typing模块,这有点过分急切。请参阅此示例,其中该假设是正确的:

enter image description here

typing模块中的类仅在类型注释上下文中有用,而不能检查或与实际的类进行比较,isinstance试图这样做。由于pycharm看到了一个带有方括号且不包含文字的简单对象,因此它会跳到您看到的错误结论。

您的代码很好,您可以按原样使用它。