#python #python-3.x
#python #python-3.x
Вопрос:
Я реализовал BaseScanner
внутри common/base/scanner.py
, то есть подклассы Scanner
внутри stash/scanner.py
, jira/scanner.py и т.д.
Теперь проблема в том, что BaseScanner
необходимо получить доступ к моделям ORM, например, в stash/db/models.py
, в зависимости от того, где это подклассы (в stash
, jira
и т.д.):
# common package
common/base/scanner.py
# stash package
stash/scanner.py
stash/db/models.py
# jira package
jira/scanner.py
jira/db/models.py
...
Является ли антишаблоном предоставление модуля в качестве аргумента классу при его создании, как я делаю здесь в main.py
?
import stash, jira
...
if args.command == 'stash':
import stash.db.models as models
scanner = jira.Scanner(args, models, ...)
scanner.run()
а затем получать доступ к различным моделям ORM изнутри BaseScanner
, например self.models.Scan
, self.models.Match
и т.д.?
Если это анти-шаблон, каким может быть альтернативное решение?
Комментарии:
1. Мне никогда не нужно было этого делать, но мне кажется, все в порядке.
2. @Code-Apprentice — спасибо за ваш комментарий. Можете ли вы придумать лучший способ сделать это?
3. Почему бы не импортировать правильную модель в каждый файл сканера?
4. @DeepSpace — базовый класс не знает, что импортировать