- 1
- 2
- 3
- 4
- 5
- 6
- 7
class Receiver(object):
def __init__(self, data):
command_name = data['command']
command_class_name = support.underscore_to_camelcase(command_name)
exec("from .commands.{name} import {klass}".format(name=command_name, klass=command_class_name))
command_class = eval(command_class_name)
self._command_object = command_class(data)
Вернулся на питон после руби. Отсутствие автолоада и полного понимания как работает импорт толкает на это.
В commands лежат модули вида имя_команды.py с классом ИмяКоманды. data приходит извне и содержит тип команды, на каждую из которых существует класс.
Цель: иметь возможность добавлять новые команды просто создав файл не дописывая никаких импортов.
Говно или не совсем?
guest 14.11.2015 15:24 # +2
FlySnake 14.11.2015 17:04 # 0
Stallman 16.11.2015 11:39 # 0
Тоже попахивает. Не лучше ли хранить там ссылку на сам класс вместо его имени?
>support.underscore_to_camelcase
Тоже бесполезная по сути обфускация.
Ты ведь пыхомакака, да?
FlySnake 16.11.2015 13:37 # 0
underscore_to_camelcase - не обфускация. просто с сервера приходят команды в змеином_кейсе (люблю его), а классы принято именовать в ВерблюжемКейсе.
w495 25.08.2021 18:36 # 0