【发布时间】:2020-03-21 21:35:02
【问题描述】:
是否可以在类中使用 Argparse,如果可以,您将如何将参数获取到解析器?有没有更好的方法来解决这个问题?到目前为止,这是我的代码:
class Game:
def __init__(self):
parser = argparse.ArgumentParser()
parser.add_argument("num_players", help="Number of players", type=int)
...
args = parser.parse_args()
if __name__ == '__main__':
g = Game()
还有没有办法提供可选参数,例如--verbose?
【问题讨论】:
-
它不太可能是最好的设计。
Game类可能不应该关心它是如何初始化的,并且它可能对命令行参数一无所知。您最好在外面解析 CLI args,然后将参数传递给Game.___init__或至少传递给专用的Game.from_cli_args类方法。 -
有可能。你有什么错误/问题?
-
@DeepSpace 这就是它最初的工作方式。我只是想使用 Argparse 的功能(即类型字段和可选参数)
-
您可以在功能上使用任何您想要的
argparse,只需在Game.__init__之外进行操作 -
core.py [-h] num_players core.py: error: the following arguments are required: num_players
标签: python python-3.x class arguments argparse