泛型类型键.
用于区分不同参数的泛型类型,例如 Repository[User] 和 Repository[Order]。
属性:
示例
key1 = GenericKey(Repository, (User,))
key2 = GenericKey(Repository, (Order,))
key1 == key2 # False
key1 == GenericKey(Repository, (User,)) # True
Source code in src/symphra_container/generics.py
| class GenericKey:
"""泛型类型键.
用于区分不同参数的泛型类型,例如 Repository[User] 和 Repository[Order]。
Attributes:
origin: 泛型基类 (例如 Repository)
args: 类型参数 (例如 (User,))
示例:
>>> key1 = GenericKey(Repository, (User,))
>>> key2 = GenericKey(Repository, (Order,))
>>> key1 == key2 # False
>>> key1 == GenericKey(Repository, (User,)) # True
"""
def __init__(self, origin: type, args: tuple[type, ...]) -> None:
"""初始化泛型键.
Args:
origin: 泛型基类
args: 类型参数元组
"""
self.origin = origin
self.args = args
def __eq__(self, other: object) -> bool:
"""判断相等."""
if not isinstance(other, GenericKey):
return False
return self.origin == other.origin and self.args == other.args
def __hash__(self) -> int:
"""计算哈希值."""
return hash((self.origin, self.args))
def __repr__(self) -> str:
"""字符串表示."""
args_str = ", ".join(arg.__name__ for arg in self.args)
return f"{self.origin.__name__}[{args_str}]"
|
__eq__(other)
判断相等.
源代码位于: src/symphra_container/generics.py
| def __eq__(self, other: object) -> bool:
"""判断相等."""
if not isinstance(other, GenericKey):
return False
return self.origin == other.origin and self.args == other.args
|
__hash__()
计算哈希值.
源代码位于: src/symphra_container/generics.py
| def __hash__(self) -> int:
"""计算哈希值."""
return hash((self.origin, self.args))
|
__init__(origin, args)
初始化泛型键.
参数:
| 名称 |
类型 |
描述 |
默认 |
origin
|
type
|
|
必需
|
args
|
tuple[type, ...]
|
|
必需
|
源代码位于: src/symphra_container/generics.py
| def __init__(self, origin: type, args: tuple[type, ...]) -> None:
"""初始化泛型键.
Args:
origin: 泛型基类
args: 类型参数元组
"""
self.origin = origin
self.args = args
|
__repr__()
字符串表示.
源代码位于: src/symphra_container/generics.py
| def __repr__(self) -> str:
"""字符串表示."""
args_str = ", ".join(arg.__name__ for arg in self.args)
return f"{self.origin.__name__}[{args_str}]"
|