Python проверяет экземпляры классов

Есть ли способ проверить, является ли объект экземпляром класса, а не экземпляром конкретного класса, но экземпляр любого класса, я могу проверить, что объект не является классом, а не модулем, а не traceback и т. Д., Но мне интересно в простом решении

isinstance() – ваш друг здесь. Он возвращает логическое значение и может использоваться следующими способами для проверки типов.

 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() ?

Вы также можете посмотреть на hasattr(obj, '__class__') чтобы узнать, был ли объект создан из какого-либо типа класса.

Я опаздываю. В любом случае, подумайте, что это должно сработать.

 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) – это то, что вы ищете?

или

 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