跳到主要内容

构造方法

标准方式

首先给出 Alconna 的构造函数签名:


class Alconna(Subcommand):
def __init__(
self,
*args: Option | Subcommand | str | THeader | Any | Args | Arg,
action: ArgAction | Callable | None = None,
meta: CommandMeta | None = None,
namespace: str | Namespace | None = None,
separators: str | set[str] | Sequence[str] | None = None,
analyser_type: type[TAnalyser] | None = None,
behaviors: list[ArparmaBehavior] | None = None,
formatter_type: type[TextFormatter] | None = None
):
...

其中主要的 args 参数可以接受 Alconna 所需要的基本参数:

  • command (str | Any): 命令名称, 主要传入 str 类型; 其他类型会被转换为 BasePattern 类型
  • prefixes (TPrefixes): 命令前缀; 前缀与名称的具体用法详见 命令头
  • args (Args | Arg): 命令参数, 用于匹配命令参数, 详见 命令参数
  • options (Option): 命令选项, 用于匹配命令选项, 详见 选项
  • subcommands (Subcommand): 子命令, 用于匹配子命令, 详见 子命令

类似如下:

from alconna import Alconna, Arg, Args, Option, Subcommand

alc = Alconna(
"test",
["/", "!"],
Arg("arg1", int),
Args["arg2", int]["arg3", int],
Option("-o|--option", Args["foo", str]["bar", str]),
Subcommand(
"sub",
Args["arg2", int]["arg3", int],
Option("-o|--option", Args["foo", str]["bar", str])
)
)

其他参数的含义如下:

  • meta (CommandMeta | None): 命令元数据, 详见 元数据
  • namespace (str | Namespace | None): 命令的命名空间, 详见 命名空间
  • separators (str | set[str] | Sequence[str] | None): 命令分隔符, 详见 分隔符
  • behaviors (list[ArparmaBehavior] | None): 命令解析行为, 详见 解析行为
  • formatter_type (type[TextFormatter] | None): 帮助信息格式化器类型, 详见 帮助信息格式化器