目录
一、泛型的定义
二、泛型的使用样例
2.1 泛型类
2.2. 泛型函数
2.3 泛型集合类型
一、泛型的定义
泛型允许你定义数据结构或函数时使用类型参数,这些类型参数在具体使用时可以被替换为具体的类型。Python 的 typing
模块提供了对泛型的支持,使用泛型的好处:
- 代码重用:泛型允许你编写能够处理多种数据类型的通用代码,减少代码重复。
- 类型安全:通过类型注解,静态类型检查工具(如
mypy
)可以在编译时检查类型错误,提高代码的健壮性。 - 可读性和可维护性:明确的数据类型使代码更易读,更易于理解和维护。
二、泛型的使用样例
2.1 泛型类
假设你要定义一个简单的容器类,可以存储任意类型的数据:
from typing import Generic, TypeVar# 定义一个类型变量 T
T = TypeVar('T')# 定义一个泛型类 Box,它包含一个类型为 T 的值
class Box(Generic[T]):def __init__(self, content: T):self.content = contentdef get_content(self) -> T:return self.content# 使用 Box 类存储不同类型的数据
int_box = Box(123)
str_box = Box("hello")print(int_box.get_content()) # 输出: 123
print(str_box.get_content()) # 输出: hello
2.2. 泛型函数
from typing import TypeVar# 定义一个类型变量 T
T = TypeVar('T')# 定义一个泛型函数,它接受并返回相同类型的值
def identity(x: T) -> T:return x# 使用泛型函数
print(identity(42)) # 输出: 42
print(identity("Python")) # 输出: Python
2.3 泛型集合类型
from typing import List, Dictdef process_items(items: List[int]) -> int:return sum(items)def process_mapping(mapping: Dict[str, int]) -> int:return sum(mapping.values())# 示例
print(process_items([1, 2, 3, 4])) # 输出: 10
print(process_mapping({"a": 1, "b": 2})) # 输出: 3