如何检查对象是类还是该类的实例?

时间:2019-06-20 18:21:09

标签: python python-3.x

这似乎很简单,但我似乎无法在任何地方在线找到有关它的任何信息。

我想要做的是给一个对象,我需要能够判断它是该类本身还是该类的实例。

换句话说:

class Test:
  pass

u = Test

check(u) # returns False

i = Test()

check(i) # returns True

请注意,u只是裸类对象,而i是该类的实例。

如何实现check()函数?

1 个答案:

答案 0 :(得分:0)

我们可以将对象与类本身进行比较,以检查它是否是一个类,并使用isinstance检查它是否是该类的实例。

所以代码看起来像

def check(obj, cls):

    if obj is cls:
        print('obj is class')

    elif isinstance(obj, cls):
        print('obj is instance of class')

class Test:
  pass

u = Test
check(u,Test)

i = Test()
check(i, Test)

输出将为

obj is class
obj is instance of class

请注意,这里我们将对象与该特定类进行比较,我们还可以通过inspect.isclass

检查对象是否为类。
In [28]: u = Test                                                                                                                                            
In [29]: i = Test()                                                                                                                                          

In [30]: inspect.isclass(u)                                                                                                                                  
Out[30]: True

In [32]: inspect.isclass(i)                                                                                                                                  
Out[32]: False