说我有两个变量:
a = 123
b = 234
我想比较他们的类型。显然,显而易见的方法是:
type(a) == type(b)
然而,pylint给了我一个警告,如果可能的话我想避免:
Using type() instead of isinstance() for a typecheck. (unidiomatic-typecheck)
(我相信这并没有特别警告我使用它。)
在比较两个变量类型的情况下,我相信不能使用isinstance。
如何在不生成PyLint警告的情况下比较两个变量的类型?
答案 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