Python检查类的实例

有没有什么办法来检查对象是类的实例,而不是具体类的实例,但任何类的实例,我可以检查该对象不是类,不是模块,不是追踪等,但我很有趣的一个简单的解决scheme

isinstance()是你的朋友在这里。 它返回一个布尔值,可以通过以下方式来检查types。

 if isinstance(obj, (int, long, float, complex)): print obj, "is a built-in number type" if isinstance(obj, MyClass): print obj, "is of type MyClass" 

希望这可以帮助。

你有没有尝试过isinstance()内build函数?

你也可以看一下hasattr(obj, '__class__')来查看对象是否从某个类的types实例化的。

我迟到了。 无论如何,认为这应该工作。

 is_class = hasattr(obj, '__name__') 
 class test(object): pass type(test) 

回报

 <type 'type'> instance = test() type(instance) 

回报

 <class '__main__.test'> 

所以这是将他们分开的一种方法。

 def is_instance(obj): import inspect, types if not hasattr(obj, '__dict__'): return False if inspect.isroutine(obj): return False if type(obj) == types.TypeType: # alternatively inspect.isclass(obj) # class type return False else: return True 

告诉你想要的东西inspect.isclass(val) ,但是也许inspect.isclass(val)就是你要找的东西?

要么

 import inspect inspect.isclass(myclass) 

这是一个肮脏的伎俩。

 if str(type(this_object)) == "<type 'instance'>": print "yes it is" else: print "no it isn't" 

最近不得不处理类似的事情。

 import inspect class A: pass def func(): pass instance_a = A() def is_object(obj): return inspect.isclass(type(obj)) and not type(obj) == type is_object(A) # False is_object(func) # False is_object(instance_a) # True