W pythonie w czasie wykonywania określ, czy obiekt jest instancją klasy (starego i nowego typu)

Próbuję napisać głęboko zagnieżdżony zestaw klas, atrybutów, powiązanych metod itp. Do pliku HDF5, używając modułu h5py do długoterminowego przechowywania. Jestem naprawdę blisko. Jedynym zmarszczeniem, którego nie mogę rozwiązać, jest programowe, w czasie wykonywania, ustalenie sposobu określenia, czy coś jest typem instancji klasy, a nie listy, int itd. instancja klasy, ale oczywiście nie powinna powtarzać się w int, float itp. Musi to działać zarówno w klasach starego, jak i nowego. Rzeczy, które zbadałem, które nie działają / nie mogę dostać się do pracy:

Korzystanie z modułu inspekcji

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

To nie jest pomocne, potrzebuję takiej funkcjiinspect.isclassinstance(_R) wracaćTrue

Korzystanie z modułu typów

Jeśli używasz klas starego stylu, istnieje typ o nazwie InstanceType, który pasuje do instancji klas w starym stylu, tak jak w poniższym kodzie

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

Ale jeśli używasz klas nowego stylu, nie ma odpowiedniego typutypes

questionAnswers(3)

yourAnswerToTheQuestion