У меня есть функция, которая принимает класс (не экземпляр), и, в зависимости от того, является ли это конкретный класс или подкласс этого , мне нужно передать его одному из двух других (сторонние) заводские функции.
(Чтобы предотвратить любые возражения, я знаю, что это не очень Pythonic, но я зависим от того, что принимает сторонняя библиотека.)
issubclass
работает только для экземпляров, но не для самих объектов класса. Я полагаю, что могу создать экземпляр класса, выполнить issubclass
и выбросить экземпляр, но это кажется немного расточительным.
Вот что я сейчас делаю, опираясь на встроенный атрибут mro , чтобы определить, есть ли определенный класс в списке предков моего класса. Это безопасно, и есть ли лучший способ сделать это?
if GenericClass in myclass.__mro__:
result = generic_factory(myclass)
else:
result = other_factory(myclass)