Python 确定是否 isinstance 而不检查超类

And*_*unt 5 python

class A:
   pass

class B(A):
   pass
Run Code Online (Sandbox Code Playgroud)

如何在不引用的情况下检查它var是 的实例B,而不是. 我有大约 50 个类,它们是某些类的子类。我想检查实例是否是一个孩子。就像是。AAnot isinstance(var, A)

有什么办法吗?

moo*_*eep 6

isinstance(object, classinfo)检查该对象是否是作为第二个参数给出的类的实例(或其子类)。

type(object)返回对象的确切类型。

因此,您可以检查该对象是否是 的子类的实例A,而不是A其本身,您可以执行如下操作。

if isinstance(obj, A) and not type(obj) == A:
    print("is subclass of A")
else:
    print("is either A or completely unrelated")
Run Code Online (Sandbox Code Playgroud)

以供参考: