Импорт классов также импортирует опции argparse - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть скрипт x_1.py, в котором я определил класс Class_X.

Другой скрипт, который я использую, это x_2.py, в котором у меня есть следующая строка:

from x_1 import Class_X

Оба сценария x_1.py и x_2.py имеют разные параметры argsparse.Когда я вызываю python x_1.py --h, я получаю правильные параметры аргумента для x_1.py.Когда я вызываю python x_2.py --h, я получаю параметры аргумента x_1.py вместо параметров для x_2.

Есть идеи, как это исправить ...?

1 Ответ

0 голосов
/ 21 декабря 2018

Скорее всего (если вы не делаете что-то действительно странное), вы хотите добавить защиту к x_1.py для защиты кода, который не должен запускаться, если вместо этого импортируется скрипт.

def some_function():
   pass

p = argparse.ArgumentParser()
p.add_argument(...)

if __name__ == "__main__":
    args = p.parse_args()
    # do some other stuff

Теперь, если вы импортируете x_1 в другой модуль, будут определены только some_function и p;p.parse_args не будет вызван, и p сам будет использоваться, только если x_2 решит его использовать.Если p не представляет интереса для других модулей, его определение и конфигурацию также можно перенести в оператор if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...