Как определить, произошел ли класс из другого класса

У меня есть функция, которая принимает класс (а не экземпляр) и, в зависимости от того, является ли он конкретным классом или подклассом этого, мне нужно передать его одному из двух других (сторонних) w770 > .

(Чтобы предотвратить любые возражения, я знаю, что это не очень Pythonic, но я зависим от того, что принимает сторонняя библиотека.)

issubclass работает только для экземпляров, а не для объектов класса. Я предполагаю, что могу создать экземпляр класса, сделать issubclass и выбросить экземпляр, но это кажется немного расточительным.

Вот что я делаю в данный момент, полагаясь на встроенный атрибут mro, чтобы узнать, находится ли определенный класс в списке предков моего класса. Это безопасно, и есть ли лучший способ сделать это?

if GenericClass in myclass.__mro__:
    result = generic_factory(myclass)
else:
    result = other_factory(myclass)

Ответы

Ответ 1

issubclass работает только для экземпляров, а не для объектов класса.

Это отлично работает для меня:

>>> class test(object):pass
...
>>> issubclass(test,object)
True