命令行参数传递给函数并作为字典返回的问题
Issue with command line arguments passed to function and returned as dictionary
class Cass(object):
def __init__(self, **args):
self.top_n = "endpoint1"
self.time_series = "endpoint2"
def get_args(**kwargs):
print kwargs
def main(args):
cass = Cass()
cass.get_args()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-r', '--regional', type=bool, default=False)
parser.add_argument('-tn', '--top_n', type=bool, default=False)
parser.add_argument('-tt', '--traffic_to', type=str, default=False)
parser.add_argument('-tf', '--traffic_from', type=str, default=False)
parser.add_argument('-s', '--start_time', type=int, default=False)
parser.add_argument('-e', '--end_time', type=int, default=False)
args = parser.parse_args()
main(args)
当我 运行 python cassa_revamp.py -r True -tn False -tt ca -tf ca -s 0 -e 10
时,我希望所有参数都打印为字典,因为我使用的是 **kwargs
。我收到以下错误:
Traceback (most recent call last):
File "cassa_revamp.py", line 36, in <module>
main(args)
File "cassa_revamp.py", line 22, in main
cassavania.get_args()
TypeError: get_args() takes exactly 0 arguments (1 given)
args
是一个 Namespace
对象; get_args
需要零个或多个关键字参数。您需要使用
调用 get_args
cass.get_args(**vars(args))
vars
returns 其参数属性的字典,**
语法将字典作为关键字参数序列而不是单个 dict
传递对象。
此外,get_args
应该定义为将 self
作为关键字参数之外的参数:
def get_args(self, **kwargs):
print kwargs
class Cass(object):
def __init__(self, **args):
self.top_n = "endpoint1"
self.time_series = "endpoint2"
def get_args(**kwargs):
print kwargs
def main(args):
cass = Cass()
cass.get_args()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-r', '--regional', type=bool, default=False)
parser.add_argument('-tn', '--top_n', type=bool, default=False)
parser.add_argument('-tt', '--traffic_to', type=str, default=False)
parser.add_argument('-tf', '--traffic_from', type=str, default=False)
parser.add_argument('-s', '--start_time', type=int, default=False)
parser.add_argument('-e', '--end_time', type=int, default=False)
args = parser.parse_args()
main(args)
当我 运行 python cassa_revamp.py -r True -tn False -tt ca -tf ca -s 0 -e 10
时,我希望所有参数都打印为字典,因为我使用的是 **kwargs
。我收到以下错误:
Traceback (most recent call last):
File "cassa_revamp.py", line 36, in <module>
main(args)
File "cassa_revamp.py", line 22, in main
cassavania.get_args()
TypeError: get_args() takes exactly 0 arguments (1 given)
args
是一个 Namespace
对象; get_args
需要零个或多个关键字参数。您需要使用
get_args
cass.get_args(**vars(args))
vars
returns 其参数属性的字典,**
语法将字典作为关键字参数序列而不是单个 dict
传递对象。
此外,get_args
应该定义为将 self
作为关键字参数之外的参数:
def get_args(self, **kwargs):
print kwargs