python-泛型实现,类型检查
- 泛型类型
- 泛型类
在Python中,没有像Java中的泛型那样的明确语法来指定类型参数。Python是一种动态类型语言,可以灵活地处理不同类型的对象。
然而,如果你希望在Python中添加泛型的注释或提示,以提高代码的可读性和类型安全性,可以使用类型提示。类型提示是一种Python的特殊语法,用于指定变量、函数参数和返回值的类型信息。
要在Python中添加类型提示,你可以使用typing模块中的泛型类或泛型类型。下面是几个常用的泛型类型的示例:
List[T]: 表示元素类型为 T 的列表。 Dict[K, V]: 表示键类型为 K,值类型为 V 的字典。 Tuple[T1,
T2]: 表示包含两个元素,类型分别为 T1 和 T2 的元组。 Optional[T]: 表示类型为 T 或 None 的可选值
下面是一个示例,展示如何在Python中使用类型提示来指定泛型:
泛型类型
from typing import List, Dict, Optionaldef process_list(lst: List[int]) -> List[str]:result = []for num in lst:result.append(str(num))return resultdef process_dict(dct: Dict[str, int]) -> Dict[str, Optional[str]]:result = {}for key, value in dct.items():result[key] = str(value) if value is not None else Nonereturn result# 使用泛型类型注释定义列表
numbers: List[int] = [1, 2, 3, 4]
# 类型提示指示 process_list 函数接受 List[int] 并返回 List[str]
result_numbers: List[str] = process_list(numbers)
print(result_numbers) # 输出: ['1', '2', '3', '4']# 使用泛型类型注释定义字典
scores: Dict[str, int] = {"Alice": 85, "Bob": 92, "Charlie": 78}
# 类型提示指示 process_dict 函数接受 Dict[str, int] 并返回 Dict[str, Optional[str]]
result_scores: Dict[str, Optional[str]] = process_dict(scores)
print(result_scores) # 输出: {'Alice': '85', 'Bob': '92', 'Charlie': '78'}
泛型类
from typing import TypeVarT = TypeVar('T') # 创建泛型类型变量 Tclass Box(Generic[T]):def __init__(self, item: T):self.item = itemdef get_item(self) -> T:return self.item# 创建一个装有整数的 Box
int_box = Box(5)
item = int_box.get_item()
print(item) # 输出: 5
print(type(item)) # 输出: <class 'int'># 创建一个装有字符串的 Box
str_box = Box("Hello")
item = str_box.get_item()
print(item) # 输出: Hello
print(type(item)) # 输出: <class 'str'>
请注意,在Python中,类型提示只是一种静态分析工具,而不会在运行时执行类型检查。因此,它们不会阻止你在运行时传递不匹配的类型。类型提示主要用于提供开发工具、编辑器和静态分析工具使用的类型信息,以帮助你编写更具可读性和可维护性的代码。