跳转至

泛型键(GenericKey)

symphra_container.generics.GenericKey

泛型类型键.

用于区分不同参数的泛型类型,例如 Repository[User] 和 Repository[Order]。

属性:

名称 类型 描述
origin

泛型基类 (例如 Repository)

args

类型参数 (例如 (User,))

示例

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}]"