class A:
pass
class B(A):
pass
Run Code Online (Sandbox Code Playgroud)
如何在不引用的情况下检查它var是 的实例B,而不是. 我有大约 50 个类,它们是某些类的子类。我想检查实例是否是一个孩子。就像是。AAnot isinstance(var, A)
有什么办法吗?
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)
以供参考: