Die documentation ist schon recht einfach:
Anstatt die Definitionen dieser Argumente zu wiederholen, einen einzigen Parser mit allen geteilt Argumente und an die Eltern weitergegeben = Argument ArgumentParser verwendet werden kann
Ein Anwendungsfall das kommt in den Sinn, wenn Sie eine Menge von Skripts haben, die verschiedene Dinge zu einer Datenbank machen, die einen Benutzernamen und ein Passwort erfordert, auf die zugegriffen werden soll. Eines der Skripte ändert eine Tabelle, ein anderes ändert ein paar Berechtigungen ... aber all diese Skripte benötigen den Benutzernamen und das Passwort, um auf die Datenbank zuzugreifen, richtig?
Sie könnten einen Argumentarser "base" haben, der den Benutzernamen und das Kennwort erwartet (oder analysiert) und dann speziellere Parser mit mehr Argumenten hat. Zum Beispiel:
import argparse
def make_basic_parser():
parser = argparse.ArgumentParser(description='Basic parser (only username/password).',
add_help=False)
parser.add_argument('--username', type=str, help='Username to access database')
parser.add_argument('--password', type=str, help='Password to access database')
return parser
def alter_table_parser():
parent = make_basic_parser()
parser = argparse.ArgumentParser(description='Alter a table', parents=[parent])
parser.add_argument('--table', type=str, help='Table to alter')
return parser
if __name__ == "__main__":
parser = alter_table_parser()
args = parser.parse_args()
print("Received arguments: %s" % (args))
des Lauf bewirkt:
$ python ./stack_055_A.py --username foo --password bar --table baz
Received arguments: Namespace(password='bar', table='baz', username='foo')
So können Sie die Grund \ Parser wiederverwenden jedes Mal, wenn Sie einen Benutzername und ein Passwort benötigen.
Suchen Sie nach "[argparse] eltern", um zu sehen, wie andere das Feature verwendet haben. Es ist nicht stark benutzt. Es kann praktisch sein, aber selten notwendig. Oft kann es durch eigene Utility-Funktionen ersetzt werden. – hpaulj
@hpaulj wo suche ich das? –
Genau hier auf Stackoverflow, dem [argparse] Tag und dem 'eltern' String. – hpaulj