How do I compare the type of two variables without generating PyLint warnings?
假设我有两个变量:
1 2 | a = 123 b = 234 |
我想比较一下他们的类型。显而易见的是:
1 | type(a) == type(b) |
但是,皮林特给了我一个警告,如果可能的话,我想避免:
1 | Using type() instead of isinstance() for a typecheck. (unidiomatic-typecheck) |
(我相信这并不是特别警告我的使用。)
在比较两种变量类型的情况下,我相信不能使用isinstance。
在不生成pylint警告的情况下,如何比较两个变量的类型?
人们太沉迷于过梁。它就像是《Pep8时尚指南》。它们是指导方针,你必须运用自己的判断。
如果你需要知道某物的类型是否与其他某物的类型相同,那么绝对直接
1 | type(a) == type(b) |
是最毒气的方式。如果你能避免的话,跳过疯狂的圈来做一些简单的事情并不是惯用的Python。
尽管如此,在Python中,通常不需要知道这两种类型是否完全相同。(参见Brenbarn和Chad S.的评论),因此,与比较这两种类型的一行代码相比,过梁可能指向更大的"代码气味"。
如果您必须进行比较,如果两种类型完全相同,并且由于某种原因不能使用
1 | a.__class__ is b.__class__ |
还要注意这种检查对旧样式类的限制。
只需关闭皮林警告。
只需一句话,你就可以做到:
1 | types_match = type(a) == type(b) # pylint: disable=unidiomatic-typecheck |
请参阅https://pylint.readthedocs.io/en/latest/user_guide/message-control.html