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

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

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

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

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

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

One Solution collect form web for “Как определить, произошел ли класс из другого класса”

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

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

 >>> class test(object):pass ... >>> issubclass(test,object) True 
  • Как подсчитать статьи и поместить их в список
  • Почему я получаю «NameError: глобальное имя« open »не определено» в __del__?
  • Python, запустить тест, отправить электронное сообщение, если он не работает
  • Сгенерировать все уникальные перестановки 2d массива
  • Преобразование списка из 3 элементов в словарь
  • Найти новую папку в каталоге на Python
  • Как скопировать все свойства объекта на другой объект в Python?
  • Как узнать, какие библиотеки Python установлены на моем Mac?
  • Python - лучший язык программирования в мире.