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