Это зависит от того, хотите ли вы считать два объекта одного и того же класса, если один является экземпляром подкласса класса, который вы ищете.
Например, если у вас есть one = classA()
и two = classB()
, где classB
- это подкласс classA
. Ваш первый подход, где у вас было:
type(one) == type(two) == classA
, оценивается как False
. Но использование isInstance
примерно так:
isInstance(one, classA) and isInstance(two, classA)
будет оцениваться в True
.
То, что задумано в PEP8, - это предупредить вас о том, что такое распространенное явление, как Pythonлюди решили, что программист должен быть предупрежден об этом. Почти всегда более полезно сравнивать классы через isInstance
, до такой степени, что если интерпретатор видит type(one) == type(two)
, он будет предполагать, что вы не собираетесь делать необычные вещи, вы намереваетесь сделать более полезные для всехisInstance
сравнение, но вы делаете это неправильно.
Короче говоря, вы, скорее всего, захотите использовать isInstance
, но не зная о вашей ситуации, я не могу сказать, для чегоабсолютно уверен, что вы не хотите использовать type
.