Не уверен, что есть хороший способ справиться с этим, для меня просто имеет смысл визуально разложить каждый объект / класс в отдельный модуль в общем пакете.
Например:
- / Настройки /
- / Настройки /
__init__.py
- / Настройки /
AbstractSetting.py
- / Настройки /
Float.py
- / Settings /
String.py
Каждый класс внутри каждого модуля имеет то же имя, что и модуль, и в настоящее время я продолжаю делать это:
import Settings
mysetting = Settings.Float.Float()
..дает мне эти двойные имена «Float».
Я мог бы сделать, в __init__.py
пакета:
from Float import Float
.. так, чтобы я мог тогда сделать:
import Settings
mysetting = Settings.Float()
Но я бы хотел, чтобы этот пакет динамически обновлялся до любых модулей, которые я вставил в него.Чтобы на следующий день, когда я добавил «Knob.py» в этот пакет, я мог сделать:
import Settings
myknob = Settings.Knob()
Имеет смысл?
Но опять же, я не работалс пакетами ранее и все еще пытаюсь обернуть мою голову вокруг этого и попытаться сделать это как можно проще.В этот момент мне стало легче, когда все классы внутри одного большого мастер-модуля становятся все более громоздкими.
Может быть, пакеты - это не тот путь?Какие у меня есть альтернативы?
Спасибо большое.
РЕДАКТИРОВАТЬ: Основная причина, по которой я хочу это сделать, - позволить пользователям писать свои собственные модули, которые будут интегрироваться с остальной частью приложения.Родная "плагиновая" архитектура, если хотите.
Каждый модуль будет содержать класс, унаследованный суперклассом со значениями по умолчанию.Затем приложение имеет браузер с доступными модулями, который при нажатии отображает соответствующую информацию, найденную в атрибутах модулей.Каждый содержащийся в нем класс имеет аналогичный интерфейс, с которым приложение может использовать.
Я еще кое-что прочитал, и, видимо, это не тот путь.Хотелось бы услышать ваши идеи о том, какими могут быть преимущества / недостатки этого подхода.