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]