这似乎很简单,但我似乎无法在任何地方在线找到有关它的任何信息。
我想要做的是给一个对象,我需要能够判断它是该类本身还是该类的实例。
换句话说:
class Test:
pass
u = Test
check(u) # returns False
i = Test()
check(i) # returns True
请注意,u
只是裸类对象,而i
是该类的实例。
如何实现check()
函数?
答案 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