В 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