Прежде всего, обратите внимание, что термин "фабрика классов" в Python несколько устарел.Он используется в таких языках, как C ++, для функции, которая возвращает динамически типизированный экземпляр класса.У него есть имя, потому что оно выделяется в C ++;это не редкость, но достаточно редко, когда полезно дать шаблону имя.В Python, однако, это делается постоянно - это такая базовая операция, что никто не удосуживается дать ей специальное имя.
Также обратите внимание, что фабрика классов возвращает экземпляры класса, а не сам класс,(Опять же, это потому, что это из языков, таких как C ++, которые не имеют понятия о возврате объектов только для класса.) Однако вы сказали, что хотите вернуть «новый класс», а не новый экземпляр класса.
Создать локальный класс и вернуть его тривиально:
def make_class(x):
class C(A):
p = x
return C