“E271:不比较类型,使用isinstance()”错误

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

python PEP 8 linter不喜欢这样:

assert type(a) == type(b)

它告诉我使用“isinstance()”代替。但是要使用isinstance,我必须做类似的事情

assert isinstance(a, type(b)) and isinstance(b, type(a))

这似乎更加无懈可击,我并没有真正看到这一点。

棉绒在某种程度上是明智的,我看不到吗?或者我在某种程度上是明智的?

python pep8
1个回答
1
投票

从评论中添加的上下文:

根据我的程序的逻辑,在代码中的这一点上应该有type(a) == type(b),我只想声明看到一切都运行顺利

在这种情况下,你应该忽略linter,因为它并没有暗示对你有用的东西。 E271旨在通过类型检查警告人们问题,例如:

if type(a) == A:
    ...

通过忽略考虑aA的子类的实例的可能性,上面的例子可能意外地阻碍了逻辑流程。

© www.soinside.com 2019 - 2024. All rights reserved.