comment passer argparse des arguments à une classe

Je suis très nouveau pour le codage en général et Python en particulier. Je suis en train d'apprendre comment passer argparse arguments, j'ai créé une classe pour utiliser le droit de recommander ou de manière. En plus de l'apprentissage de python, je suis en train d'apprendre comment faire les choses en programmation orientée objet, de sorte que l'apprentissage d'autres, de la programmation orientée objet-type de langues un peu plus facile.

Alors, voici un échantillon de ce que je suis en train de faire:

import argparse

class passyourcliargstome():
    def __init__(self, whatdoiputheretogetmycliargs):
        #how do I get my cli args here?
        pass
    def otherfunctionsthatdothings():
        pass

if __name__ == '__main__':
    #grab the arguments when the script is ran
    parser = argparse.ArgumentParser(
         description='Make things happen.')
    parser.add_argument('-f', '--foo', action='store_true', default=False, help='here be dragons')
    parser.add_argument('-b', '--bar', action='store_true', default=False, help='here be more dragons')

    passyourcliargstome.otherfunctionsthatdothings()

Donc, je suis à la définition de argparse arguments à l'extérieur de la classe principale, et vous voulez savoir comment obtenir à l'intérieur de la classe. Est-ce vraiment la bonne façon de le faire? dois-je simplement faire argparse une fonction en vertu de ma classe?

Je vous remercie d'avance pour toute aide, références, etc.

Edit: 11/16 2:18 HNE

Remarque: Puisque je n'ai pas assez de rep pour répondre à ma propre question, c'est mon seul recours pour poster une réponse appropriée.

Bon, il m'a fallu le faire, mais j'ai trouvé cet ensemble. RyPeck réponses m'ont aidé à obtenir mes arguments (quelque chose que mon code est manquante), mais ensuite j'ai été d'être indépendant de la méthode des erreurs Quand j'ai essayé de tester le code. Je n'avais aucune idée de ce que cela signifiait. Ai-je mentionné que je vis jusqu'à l'écran de mon nom?

Il n'a pas vraiment cliquez jusqu'à ce que j'ai trouvé et lu cette. Voici mon code de travail. Si quelqu'un a quelque chose à ajouter à ce, jusqu'à et y compris "Vous êtes toujours de faire le mal, faire de cette façon, le droit chemin." Je suis toutes les oreilles. En attendant, merci pour votre aide.

import argparse

class Passyourcliargstome(object):

    def __init__(self):
        #here's how I got my args here
        self.foo = args.foo
        self.bar = args.bar
    def otherfunctionsthatdothings(self):
        print "args inside of the main class:"
        print self.foo
        print self.bar

if __name__ == '__main__':
    #grab the arguments when the script is ran
    parser = argparse.ArgumentParser(description='Make things happen.')
    parser.add_argument('-f', '--foo', action='store_true', default=False, help='here be dragons')
    parser.add_argument('-b', '--bar', action='store_true', default=False, help='here be more dragons')

    args = parser.parse_args()
    print "args outside of main:"
    print args.foo
    print args.bar

    #this was the part that I wasn't doing, creating an instance of my class.
    shell = Passyourcliargstome()
    shell.otherfunctionsthatdothings()

L'exécution de ce code sans arguments des impressions Fausses quatre fois. deux fois à l'extérieur de l'instance de classe, à deux reprises au sein de l'instance de classe.

Je préfère passer args comme un argument de la classe __init__, plutôt qu'en fonction de l'être global.

OriginalL'auteur some_noob | 2013-11-16