如何在不生成PyLint警告的情况下比较两个变量的类型?

时间:2016-01-06 17:35:15

标签: python

说我有两个变量:

a = 123
b = 234

我想比较他们的类型。显然,显而易见的方法是:

type(a) == type(b)

然而,pylint给了我一个警告,如果可能的话我想避免:

Using type() instead of isinstance() for a typecheck. (unidiomatic-typecheck)

(我相信这并没有特别警告我使用它。)

在比较两个变量类型的情况下,我相信不能使用isinstance。

如何在不生成PyLint警告的情况下比较两个变量的类型?

3 个答案:

答案 0 :(得分:1)

如果绝对必须比较,如果其中任何一个属于exact相同的类型,并且由于某种原因您无法使用type()the last resort可能是:

a.__class__ is b.__class__

还要注意对旧式类的检查限制。

答案 1 :(得分:1)

人们对于短跑过于沉重。这就像PEP 8 style guide。它们是指导方针,你必须自己判断。

如果你需要知道某事物的类型是否与其他事物的类型相同,那么绝对是直截了当的

type(a) == type(b)

是最恐怖的方式。如果你可以避免它,那就是惯用Python来跳过疯狂的箍来做简单的事情。

所有这一切,通常情况并非如此,你真的需要知道两件事的类型是否完全相同。 (参见BrenBarn和Chad S.的评论)因此,linter可能指向一个更大的“代码气味”,而不仅仅是比较这两种类型的那一行。

答案 2 :(得分:0)

只需关闭pylint警告。

在一条线上,您可以这样做:

types_match = type(a) == type(b) # pylint: disable=unidiomatic-typecheck

请参阅https://pylint.readthedocs.io/en/latest/user_guide/message-control.html