mypy-无法在类型签名中使用BufferedIOBase

问题描述 投票:1回答:1

我有以下代码

import io

def reader(byte_stream: io.BufferedIOBase):
    ...

reader(open("./README.md", "rb"))

通过mypy运行此文件时,出现以下类型错误:

subclass.py:6:8: error: Argument 1 to "reader" has incompatible type "BinaryIO"; expected "BufferedIOBase"  [arg-type]
    reader(open("./README.md", "rb"))
           ^
Found 1 error in 1 file (checked 1 source file)

虽然这应该不是错误,因为BinaryIO继承自BufferedIOBase,我已经在这里进行了验证:

isinstance(open("./README.md", "rb"), io.BufferedIOBase)  # True

所以,我的类型签名有什么问题?

python mypy python-typing
1个回答
0
投票

我不确定为什么该类与类型提示不兼容,但是简单的解决方法是在签名中使用类型提示。 (甚至记录为代表open返回的值的类型。)

def reader(byte_stream: typing.BinaryIO):
    ...
© www.soinside.com 2019 - 2024. All rights reserved.