DocOpTemplate
类数据类源码
DocOpTemplate(
name: str,
template: str,
func: DocFunction,
special: Literal["no", "yield"] = "no"
)
常规运算符的模板。
以运算符len为例,其实现可以写作:
DocOpTemplate(name="len", template="{vr1}: {tr1} = len({va1})")
另一个例子是运算符getitem,也可以将其特定成已知类型:
DocOpTemplate(name="getitem", template="data: DataType = value[key]")
字段
| 字段 | 类型 | 必选 | |
|---|---|---|---|
name | str | 运算符的名称(不包括下划线)。 | |
template | str | 模板内容。使用"{vr1}", "{tr1}", "{va1}", "{ta1}", … 来分别代表返回值和输入参数的变量名、类型。 | |
func | DocFunction | 从运算符的函数体的 docstring 解析的结果。 | |
special | Literal["no", "yield"] | 针对运算符字符串形式的特殊渲染情形。如果未指定,则会默认使用template渲染字符串。 |
方法
as_md_text
v_1: str = self.as_md_text(renderer: ProtocolComponent)
渲染为 Markdown 文字。
输入
| 参数 | 类型 | 必选 | |
|---|---|---|---|
renderer | ProtocolComponent | 用来渲染组件的渲染器。 |
输出
| 参数 | 类型 | |
|---|---|---|
v_1 | str | 从运算符渲染的 Markdown 文本。 |
from_func
v_1: Self = DocOpTemplate.from_func(func: Any, base_cls: type[Any])
从运算符函数构造DocOpTemplate。
输入
| 参数 | 类型 | 必选 | |
|---|---|---|---|
func | Any | 用语构造该运算符模板的方法函数。 | |
base_cls | type[Any] | 该运算符定义所在的类。 |
输出
| 参数 | 类型 | |
|---|---|---|
v_1 | Self | 使用给定的运算符方法构造的运算符模板。 |
属性
str_v2
str_v2: str = self.str_v2
渲染 V2 字符串。
所谓 v2 字符串可以描述为以下格式:
template.format(
va1=self.func.args[0].name, a1=self.func.args[0].type,
...
vr1=self.func.retval[0].name, r1=self.func.retval[0].type,
...
)
相比默认的字符串格式更加紧凑。