Python中 类型注解,类型别名,类型假名,泛型类,联合类型等概念
部分示例代码如下:
LanguageModelInput = Union[PromptValue, str, Sequence[BaseMessage]]
LanguageModelOutput = Union[BaseMessage, str]
LanguageModelLike = Runnable[LanguageModelInput, LanguageModelOutput]
LanguageModelOutputVar = TypeVar("LanguageModelOutputVar", BaseMessage, str)
class BaseLanguageModel(
RunnableSerializable[LanguageModelInput, LanguageModelOutputVar], ABC
):
"""Abstract base class for interfacing with language models.
All language model wrappers inherit from BaseLanguageModel.
"""
此代码涉及到的Python概念包含 “类型注解(Type Annotations)”,“类型别名(Type Aliases)”,“类型假名(TypeVar)”,“泛型类(GenericType)”,“联合类型(Union)”等。具体解释如下:
LanguageModelInput = Union[PromptValue, str, Sequence[BaseMessage]]:这是一个类型别名(Type Alias),表示在输入情况中,LanguageModelInput可以是PromptValue类型,或是str类型,或是BaseMessage类型的序列。LanguageModelOutput = Union[BaseMessage, str]:这是一个类型别名,表示在输出情况中,LanguageModelOutput可以是BaseMessage类型,或是str类型。LanguageModelLike = Runnable[LanguageModelInput, LanguageModelOutput]:这表示LanguageModelLike类型是以LanguageModelInput作为输入,以LanguageModelOutput作为输出的Runnable类型。LanguageModelOutputVar = TypeVar("LanguageModelOutputVar", BaseMessage, str):这是创建了一个类型变量(Type Variable),也就是一种在定义时候还不确定具体类型,在实际使用的时候才确定具体类型的东西。它可以是BaseMessage或者str类型。class BaseLanguageModel(RunnableSerializable[LanguageModelInput, LanguageModelOutputVar], ABC)::这是一个抽象基类,它继承了RunnableSerializable。尖括号中的是参数化类型,指定了RunnableSerializable的参数类型为LanguageModelInput和LanguageModelOutputVar。
这段代码的整体含义是定义了一个名为 BaseLanguageModel 的抽象基类,该基类继承自参数化类型RunnableSerializable,输入类型为 LanguageModelInput,输出类型为 LanguageModelOutputVar。

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接