Можно ли использовать строку, чтобы создать экземпляр класса в Python?

Ниже у нас 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
  • Вопрос задан
  • 711 просмотров
Решения вопроса 2
>>> class Test:
  a = 5
>>> globals()['Test']()
<Test object at 0x7f73aade9cc0>
Ответ написан
yarkov
@yarkov
Помог ответ? Отметь решением.
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы