Em python em tempo de execução determine se um objeto é uma classe (tipo antigo e novo)

Eu estou tentando escrever um conjunto profundamente aninhado de classes, atributos, métodos vinculados, etc. para um arquivo HDF5 usando o módulo h5py para armazenamento a longo prazo. Estou muito perto. A única ruga que tenho que não consigo resolver é programaticamente, em tempo de execução, descobrir uma maneira de determinar se algo é um tipo de instância de classe, em vez de uma lista, int, etc. Eu preciso recorrer a a instância da classe, mas obviamente não deve recorrer a um int, float, etc. Isso precisa funcionar para classes de estilo antigo e novo. Coisas que pesquisei que não funcionam / não consigo trabalhar:

Usando inspecionar módulo

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

Isso não é útil, eu preciso de uma função comoinspect.isclassinstance(_R) para retornarTrue

Usando o módulo types

Se você usa classes de estilo antigo, há um tipo chamado InstanceType que corresponde a instâncias de classes de estilo antigo, como no código abaixo

>>> 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

Mas se você usar classes de estilo novo, não haverá nenhum tipo correspondentetypes

questionAnswers(3)

yourAnswerToTheQuestion