一、多个类型变量
你可以定义多个类型变量,适用于更复杂的泛型场景:
from typing import TypeVar, Generic
T = TypeVar('T')
U = TypeVar('U')
class Pair(Generic[T, U]):
def __init__(self, first: T, second: U):
self.first = first
self.second = second
def get_first(self) -> T:
return self.first
def get_second(self) -> U:
return self.second
# 示例
pair = Pair(1, "apple")
print(pair.get_first()) # 输出: 1
print(pair.get_second()) # 输出: apple
二、受限的类型变量
你可以使用受限的类型变量,只允许特定的类型或其子类型:
from typing import TypeVar
# 受限的类型变量,只允许 int 和 float 类型
T = TypeVar('T', int, float)
def add(x: T, y: T) -> T:
return x + y
print(add(1, 2)) # 输出: 3
print(add(1.5, 2.5)) # 输出: 4.0
# print(add(1, "2")) # 这行会导致类型检查错误