跳到主要内容

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]")

字段​

字段类型必选
说明
namestr运算符的名称(不包括下划线)。
templatestr模板内容。使用"{vr1}", "{tr1}", "{va1}", "{ta1}", … 来分别代表返回值和输入参数的变量名、类型。
funcDocFunction从运算符的函数体的 docstring 解析的结果。
specialLiteral["no", "yield"]针对运算符字符串形式的特殊渲染情形。如果未指定,则会默认使用template渲染字符串。

方法​

as_md_text​

v_1: str = self.as_md_text(renderer: ProtocolComponent)

渲染为 Markdown 文字。

输入​

参数类型必选
说明
rendererProtocolComponent用来渲染组件的渲染器。

输出​

参数类型
说明
v_1str从运算符渲染的 Markdown 文本。

from_func​

v_1: Self = DocOpTemplate.from_func(func: Any, base_cls: type[Any])

从运算符函数构造DocOpTemplate。

输入​

参数类型必选
说明
funcAny用语构造该运算符模板的方法函数。
base_clstype[Any]该运算符定义所在的类。

输出​

参数类型
说明
v_1Self使用给定的运算符方法构造的运算符模板。

属性​

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,
...
)

相比默认的字符串格式更加紧凑。