В python во время выполнения определите, является ли объект экземпляром класса (старого и нового типа)

Я пытаюсь записать глубоко вложенный набор классов, атрибутов, связанных методов и т. Д. В файл HDF5, используя модуль h5py для долговременного хранения. Я действительно близко. Единственная проблема, которую я могу устранить, - это программно, во время выполнения, найти способ определить, является ли что-то типом экземпляра класса, а не списком, int и т. Д. экземпляр класса, но, очевидно, не должен возвращаться в int, float и т. д. Это должно работать как для классов старого, так и для нового стиля. Вещи, которые я исследовал, которые не работают / я не могу добраться до работы:

Using inspect module

>>> class R(object): pass
...
>>> _R = R()
>>> import inspect
>>> inspect.isclass(_R)
False
>>> inspect.isclass(R)
True

Это не полезно, мне нужна функция вродеinspect.isclassinstance(_R) возвращатьTrue

Using the types module

Если вы используете классы старого стиля, есть тип с именем InstanceType, который соответствует экземплярам классов старого стиля, как показано в коде ниже.

>>> import types
>>> class R(): pass #old-style class
...
>>> _R = R()
>>> import types
>>> type(_R) is types.InstanceType
True
>>> class R(object): pass #new-style class
...
>>> _R = R()
>>> type(_R) is types.InstanceType
False

Но если вы используете классы нового стиля, соответствующего типа вtypes

Ответы на вопрос(3)

Ваш ответ на вопрос