У меня есть функция, которая создает классы, полученные из ее аргументов:
def factory(BaseClass) :
class NewClass(BaseClass) : pass
return NewClass
Теперь, когда я использую его для создания новых классов, все классы имеют одинаковые имена, и экземпляры выглядят так, как будто они имеют один и тот же тип:
NewA = factory(ClassA)
NewB = factory(ClassB)
print type(NewA()) # <class __main__.NewClass>
print type(NewB()) # <class __main__.NewClass>
Является ли правильное исправление для установки атрибута __name__
вручную?
NewA.__name__ = 'NewA'
print type(NewA()) # <class __main__.NewA>
Есть ли какие-то другие вещи, которые я должен устанавливать, пока я нахожусь на нем?