自学内容网 自学内容网

PyCharm的类型警告: Expected type ‘SupportsWrite[bytes]‘, got ‘BinaryIO‘ instead

记录时使用的PyCharm版本:
PyCharm 2024.3 (Professional Edition)
Build #PY-243.21565.199, built on November 13, 2024

问题描述

当在PyCharm里使用pickle保存文件, 比如以下代码这样:

    with open(meta_save_path, 'wb') as f:
        pickle.dump(meta, f)

会发现PyCharm对此发出类型警告: Expected type 'SupportsWrite[bytes]', got 'BinaryIO' instead. 如下图这样:

unexpected

解决

放心, 这不是你的问题, 而是专属于PyCharm的锅. 只需要添加# noinspection PyTypeChecker这行注释在警告的代码上即可:

    with open(meta_save_path, 'wb') as f:
        # noinspection PyTypeChecker
        pickle.dump(meta, f)

注: 虽然你也可以使用诸如typing.cast这样的方法来防止PyCharm报错, 但既然这段代码本身没问题, 只是PyCharm自身的误报, 那么这种"改正"也没什么道理.

参考

[1] https://stackoverflow.com/a/79049514/9532112
[2] https://youtrack.jetbrains.com/issue/PY-76404/Spurious-Expected-type-SupportsWritebytes-got-BinaryIO-instead-with-pickle.dump


原文地址:https://blog.csdn.net/neowell/article/details/143889659

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!