我是一名编程新手,尤其是对Python不熟悉。我正在尝试学习如何将我创建的argparse参数传递到类中以正确/推荐的方式使用。除了学习Python外,我还在努力学习以面向对象的方式进行操作,以便更轻松地学习其他面向对象类型的语言。
以下是我尝试做的示例:
因此,我正在主类外定义argparse参数,并想知道如何在类内部获取它们。这是正确的方式吗?我应该只是将argparse作为我的类下的一个函数吗?
非常感谢您提前提供的任何帮助、参考等。
注:由于我没有足够的声望来回答自己的问题,这是我发布适当答案的唯一途径。
好的,我花了一些时间,但我设法把它拼凑起来了。RyPeck的答案帮助我获得了我的参数(我的代码中缺少的东西),但之后我在尝试测试代码时遇到了未绑定方法错误。我不知道那是什么意思。我有提到过我符合我的屏幕名称吗?
直到我找到并阅读了这个,它才真正点击这里。这是我的工作代码。如果有人对此有任何补充,包括“你还是做错了,要用这种方式,正确的方式。”我全都听着。同时,感谢您的帮助。
在没有参数的情况下运行此代码会输出四次False。两次是在类实例之外,另外两次是在类实例内部。
以下是我尝试做的示例:
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()
因此,我正在主类外定义argparse参数,并想知道如何在类内部获取它们。这是正确的方式吗?我应该只是将argparse作为我的类下的一个函数吗?
非常感谢您提前提供的任何帮助、参考等。
注:由于我没有足够的声望来回答自己的问题,这是我发布适当答案的唯一途径。
好的,我花了一些时间,但我设法把它拼凑起来了。RyPeck的答案帮助我获得了我的参数(我的代码中缺少的东西),但之后我在尝试测试代码时遇到了未绑定方法错误。我不知道那是什么意思。我有提到过我符合我的屏幕名称吗?
直到我找到并阅读了这个,它才真正点击这里。这是我的工作代码。如果有人对此有任何补充,包括“你还是做错了,要用这种方式,正确的方式。”我全都听着。同时,感谢您的帮助。
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()
在没有参数的情况下运行此代码会输出四次False。两次是在类实例之外,另外两次是在类实例内部。
args
作为参数传递给类的__init__
方法,而不是依赖于它是一个全局变量。 - hpaulj