【发布时间】:2017-02-19 10:28:42
【问题描述】:
我有一个关于将 args 传递给 init
中的变量的问题这是我的工作版本代码。
class A:
def __init__(self):
self.id = args.id
self.pw = args.pw
self.endpoint = args.endpoint
def B:
..do something..
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--id', type=str, help = 'username')
parser.add_argument('-p', '--pw', type=str, help ='password')
parser.add_argument('-e', '--end_point', type=str , help='end point of api')
args = parser.parse_args()
上面的代码有效,但我现在正在尝试将所有 argparse 代码放在类 A 中的一个函数中,并将 arg 分配给 init。 我上网查了一下,没找到好的解决办法。
class A:
def __init__(self):
self.id = self.parse_args(id)
self.pw = self.parse_args(pw)
self.endpoint = self.parse_args(endpoint)
def B:
..do something..
def parse_args(self,args):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--id', type=str, help = 'username')
parser.add_argument('-p', '--pw', type=str, help ='password')
parser.add_argument('-e', '--end_point', type=str , help='end point of api')
return parser.parse_args(args)
好的,确切地说,我不确定应该如何解决这个问题。
在上面的例子中,我只是调用了 args.variable 来让 args 工作,但在这种情况下我调用了 self.id = self.parse_args.id?
parse_args 函数返回 args 我也试过 self.id = self.parse_args(id) 这给了我
TypeError: 'builtin_function_or_method' object is not iterable
我想将 args 分成一个单独的函数的部分原因是为了简化我的 argparse 单元测试。
【问题讨论】:
-
与其说没用,还需要展示你遇到的错误或结果。
-
您能否详细说明 *doesn't work"?什么不完全有效?它应该如何工作。你输入了什么得出它不工作的结论?应该怎么做行为?
-
另一方面,您的函数缺少自我引用
parse_args(self, args) -
@ Moses 和 idjaw,已编辑并感谢您的评论
标签: python function class argparse