【发布时间】:2020-07-17 11:56:24
【问题描述】:
编辑:这是我的错。正如@kevin-mayo 的回答所建议的那样,我应该使用issubclass 而不是isinstance。然后一切正常。
我最近偶然发现了 pycharm 的类型提示的一种奇怪行为,这后来揭示了 python 本身的问题。我有一个采用流的方法,所以我将类型设置为io.BaseIO。但是,当我将BytesIO 传递给它时,它给了我一个警告。我检查了以下内容:
>>> io.BytesIO.__mro__
(<class '_io.BytesIO'>, <class '_io._BufferedIOBase'>, <class '_io._IOBase'>, <class 'object'>)
>>> isinstance(io.BytesIO, io.IOBase)
False
这与 Python 文档所说的相矛盾,所以我真的很困惑。
我使用的是 Python 3.7。
我意识到这样做的鸭子打字方式,但请记住,我不是在进行严格的类型检查,而是进行方便的类型提示。
【问题讨论】:
-
@mkrieger1 这个问题并不是真正的重复,但对除了我之外的任何人都没有用,因为这是我个人的愚蠢错误。我似乎找不到关闭我自己问题的按钮,但如果我应该删除它,我可以删除它
标签: python python-3.x oop