Ниже у нас 3 класса, нужно что бы первые 2 наследовались от Master.
Тогда, они должны быть объявлены после Maser, иначе будет ошибка.
Но с другой стороны, так как в нашем случае объекты создаются при их вызове (используя свойство classes класса Master для поиска класса), я хотел бы вообще убрать это свойство, и создавать класс через строку name, которая передается при вызове __getattr__.
Возможно ли такое? Спасибо!
class Test:
a = 5
class Check:
a = 7
class Master:
classes = {
'test': Test,
'check': Check
}
objects = {}
def __getattr__(self, name):
if name in self.objects:
return self.objects[name]
elif not name in self.classes:
print('Класс не найден')
return False
else:
self.objects[name] = self.classes[name]()
print('Класс создан')
return self.objects[name]
master = Master()
print(master.test.a)
print(master.check.a)
# Класс создан
# 5
# Класс создан
# 7