Имена базовых классов класса можно получить из атрибута класса '__bases__
.
Предполагая, что ваши производные классы всегда наследуются только от одного класса, вы можете использовать следующее для получения имени базового класса:
class Foo(FooBarAbstract):
def __init__(self):
print(self.__class__.__bases__[0].__name__)
, чтобы Foo()
вывел: FooBarAbstract
Обратите внимание, что метод mro
и атрибут __mro__
менее подходят для вашей цели, поскольку они содержат не только родительский класс, но также текущий класс и родительский класс родительского класса, поэтому вам придется пропустите их, прежде чем сможете получить родительский класс.