Например, у меня есть базовый класс следующим образом:
class BaseClass(object):
def __init__(self, classtype):
self._type = classtype
Из этого класса я получаю несколько других классов, например
class TestClass(BaseClass):
def __init__(self):
super(TestClass, self).__init__('Test')
class SpecialClass(BaseClass):
def __init__(self):
super(TestClass, self).__init__('Special')
Есть ли хороший, путинский способ динамического создания этих классов с помощью вызова функции, который помещает новый класс в мою текущую область, например:
foo(BaseClass, "My")
a = MyClass()
...
Так как будут комментарии и вопросы, почему мне это нужно: производные классы имеют ту же внутреннюю структуру с разницей, что конструктор принимает несколько ранее аргументов undefined. Так, например, MyClass
принимает ключевые слова a
, а конструктор класса TestClass
принимает b
и c
.
inst1 = MyClass(a=4)
inst2 = MyClass(a=5)
inst3 = TestClass(b=False, c = "test")
Но они НИКОГДА не должны использовать тип класса в качестве входного аргумента, например
inst1 = BaseClass(classtype = "My", a=4)
Я получил это для работы, но предпочел бы другой способ, то есть динамически созданный объект класса.