у меня есть класс, который имеет конструктор так:чередуются для нескольких конструкторов
class MyClass:
def __init__(self, options):
self.options = options
.....
Иногда я начинаю экземпляр этого класса, передавая options
, например:
parser = argparse.ArgumentParser(description='something')
parser.add_argument('-v', '--victor', dest='vic')
options = parser.parse_args()
x = MyClass(options)
это работает Однако, есть несколько сценариев, когда не будет переданных параметров, поэтому для этих сценариев я создал метод в MyClass
, который будет создавать параметр по умолчанию, подобный этому.
class MyClass:
def __init__(self, options):
self.options = options
def create_default_parser(self):
parser = argparse.ArgumentParser(description='something')
parser.add_argument('-v', '--victor', dest='vic', default="winning")
options = parser.parse_args()
self.options = options
Вопрос
Как я должен начать экземпляр этого класса, когда я не хочу, чтобы пройти любой options
и использовать create_default_parser
? В идеале я хотел бы сделать еще один конструктор, который не принимает никаких параметров и в этом конструкторе я бы назвал create_default_parser
, как это:
def __init__(self):
self.create_default_parser()
Значение по умолчанию будет создано без передачи аргумента. – zondo
Что зодо сказал. В противном случае использование 'classmethod' в качестве фабрики - приятный штрих. –
Хороший улов, спасибо – Jules