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