Instantiating Classes#
In addition to functions and dataclasses, we can also generate CLIs from (the constructors of) standard Python classes.
1import tyro
2
3
4class Args:
5 def __init__(
6 self,
7 field1: str,
8 field2: int,
9 flag: bool = False,
10 ):
11 """Arguments.
12
13 Args:
14 field1: A string field.
15 field2: A numeric field.
16 flag: A boolean flag.
17 """
18 self.data = [field1, field2, flag]
19
20
21if __name__ == "__main__":
22 args = tyro.cli(Args)
23 print(args.data)
python 04_additional/04_classes.py --help
usage: 04_classes.py [-h] --field1 STR --field2 INT [--flag | --no-flag] Arguments. ╭─ options ────────────────────────────────────────────────╮ │ -h, --help show this help message and exit │ │ --field1 STR A string field. (required) │ │ --field2 INT A numeric field. (required) │ │ --flag, --no-flag A boolean flag. (default: False) │ ╰──────────────────────────────────────────────────────────╯
python 04_additional/04_classes.py --field1 hello --field2 7
['hello', 7, False]