Я хочу написать несколько команд управления в проекте Django 2.2 и Python 3.8. Все они должны иметь параметры --dry-run
. Я хотел бы иметь некоторую степень повторного использования кода при их реализации. Какой рекомендуемый подход?
Вот как я это делаю прямо сейчас.
Сделать MyBaseCommand
расширенным с BaseCommand
:
class MyBaseCommand(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--dry-run', ....)
class Command(MyBaseCommmand):
def add_arguments(self, parser):
super(Command, self).add_arguments(parser)
parser.add_arguent('--other-arg', ...)
Другой вариант Я подумал о том, чтобы создать один или несколько декораторов для каждого повторно используемого аргумента, например @dry-run
, @yaml-output
, @json-output
et c. Затем украсьте метод add_arguments
в каждом дочернем классе. Таким образом, у меня больше контроля над тем, какая команда управления получает какую повторно используемую аргумент.