Я пытаюсь написать функцию, которая создает новый подкласс с именем, который передается в качестве аргумента. Я не знаю, какие инструменты были бы лучше для этого, но я сделал это в коде ниже, и мне удалось создать подкласс «x», а не «MySubClass», как предполагалось. Как я могу правильно написать эту функцию?Как динамически генерировать подкласс в функции?
class MySuperClass:
def __init__(self,attribute1):
self.attribute1 = attribute1
def makeNewClass(x):
class x(MySuperClass):
def __init__(self,attribute1,attribute2):
self.attribute2 = attribute2
x = "MySubClass"
makeNewClass(x)
myInstance = MySubClass(1,2)
Используйте встроенную функцию 'type'. Это динамическая форма выражения класса. https://docs.python.org/2/library/functions.html#type Вы можете передать имя строки в качестве первого параметра, базовые классы в качестве второго параметра, а пространство имен - как третий параметр. – Shashank
Вы должны использовать Python [metaclasses] (http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python) –