python3.5.1isinstance在Iterab的列表和子类上失败

2024-04-25 18:04:56 发布

您现在位置:Python中文网/ 问答频道 /正文

使用第三方库,我在Python3版本之间遇到了奇怪的行为。 以下代码

from typing import Iterable
class Subiter(Iterable):
    def __init__(self):
        pass
print(isinstance([], Subiter))

在Python3.5.1中返回True,在Python3.5.3中返回False(在3.5.2中没有测试)。它可能会导致严重的错误,因为稍后可以获取Subiter类的属性并获取AttributeError。我在不同版本之间搜索changelog,但找不到相关的问题或PEP(一个候选者是bpo-24635,但似乎不同)。如果真的是虫子,谁能给我指出正确的问题?只有使用附加条件检查才能避免这种情况吗?谢谢

UPD:@ekhumoro确认它在3.5.2中返回False,所以它应该在3.5.2中。发行说明


Tags: 代码fromimportself版本falsetypinginit

热门问题