在下面的代码中:
class A(object):
pass
if __name__ == '__main__':
a1 = A
a2 = A()
如何判断a1,a2是类还是对象呢?
可以使用 inspect 模块:
import inspect
class A(object):
pass
if __name__ == '__main__':
a1 = A
a2 = A()
print(inspect.isclass(a1))
print(inspect.isclass(a2))
运行结果:
True
False
查看inspect.isclass()的源代码,发现原理是判断object是否为type的实例,是则为类,不是则为对象。
def isclass(object):
"""Return true if the object is a class.
Class objects provide these attributes:
__doc__ documentation string
__module__ name of module in which this class was defined"""
return isinstance(object, type)
所以也可以直接采用这个办法来判断:
class A(object):
pass
if __name__ == '__main__':
a1 = A
a2 = A()
print(isinstance(a1, type))
print(isinstance(a2, type))
运行结果:
True
False