Je suis assez nouveau à Python OOP, donc j'ai eu une certaine confusion.Comment intégrer des options argparse dans la classe python?
Actuellement, j'ai:
parser = argparse.ArgumentParser(description='script 1.0')
parser.add_argument('-a', '--foo', help='specify foo')
parser.add_argument('-b', '--bar', type=int, help='specify bar')
parser.add_argument('-c', '--baz', help='specify baz')
parser.add_argument('-d', '--bar2', help='bar2')
args = parser.parse_args()
foo = args.foo
bar = args.bar
baz = args.baz
bar2 = args.bar2
qui fonctionne assez bien, mais je blême de créer une classe pour l'ensemble de mon script et faire argparse comme méthode d'une classe (est-il possible?).
donc j'ai essayé:
import argparse
....
Class Program:
def __init__(self, foo, bar, baz, bar2):
self.foo = foo
self.bar = bar
...(so on for each arg)
def main():
parser = argparse.ArgumentParser(description='script 1.0')
parser.add_argument('-a', '--foo', help='specify foo')
parser.add_argument('-b', '--bar', type=int, help='specify bar')
parser.add_argument('-c', '--baz', help='specify baz')
parser.add_argument('-d', '--bar2', help='bar2')
args = parser.parse_args()
foo = self.foo
bar = self.bar
baz = self.baz
bar2 = self.bar2
Je ne pense pas que je suis en train de faire, cependant. Je n'ai pas trouvé trop d'informations à ce sujet mais un post sur SO qui n'a pas clarifié la situation pour moi, donc je veux avoir des opinions pour mon cas spécifique
Vous semblez être sur la bonne voie, À quel problème faites-vous face? – ZdaR
@ZdaR, options argparse ne se sont pas souvenu pour l'utilisation ultérieure, je devais, ne devrais-je intianalize classe comme ceci: __init __ (self, --foo, --bar, --baz, --bar2) –
Je pense qu'il est préférable d'avoir une séparation claire des préoccupations. En d'autres termes, séparez votre entrée CLI de votre logique métier (classe de programme). Pour ce faire, je n'utiliserais argparse que lorsque votre script serait exécuté directement. En d'autres termes, sous la section 'if __name__ == __main__'. Une fois que argparse a fait son travail, créez une instance de classe en lui passant les arguments analysés et en exécutant votre logique. – monkut