from typing import Any, Tuple


def 取重复成员数量(元组数据: Tuple[Any, ...]):
    """返回元组中重复成员的种类数量。

    功能说明:
        - 这个函数用于返回元组中重复成员的种类数量。
        - 常用于从元组中读取某个成员、某一段数据，或者计算出一个统计结果。
        - 如果当前数据不适合处理，函数会返回约定好的结果，方便新手直接判断这次是否成功取到值。

    说明:
        - 只统计“重复成员种类数”，不是重复出现的总次数。
        - 例如 ``(1, 2, 1, 2, 3)`` 的结果为 ``2``。

    Args:
        元组数据: 待统计的元组。

    Returns:
        成功时返回重复成员种类数量；失败时返回 ``None``。
    """
    try:
        if not isinstance(元组数据, tuple):
            return None

        已见成员 = []
        重复成员 = []
        for 元素 in 元组数据:
            if 元素 in 已见成员:
                if 元素 not in 重复成员:
                    重复成员.append(元素)
            else:
                已见成员.append(元素)
        return len(重复成员)
    except Exception:
        return None


if __name__ == "__main__":
    print("===== 示例1：基础重复种类统计 =====")
    数据 = (1, 2, 1, 3, 2, 4)
    print("结果:", 取重复成员数量(数据))

    print("\n===== 示例2：全部唯一 =====")
    数据 = ("a", "b", "c")
    print("结果:", 取重复成员数量(数据))

    print("\n===== 示例3：同一成员多次重复只算1种 =====")
    数据 = ("a", "a", "a", "b")
    print("结果:", 取重复成员数量(数据))

    print("\n===== 示例4：空元组 =====")
    数据 = ()
    print("结果:", 取重复成员数量(数据))

    print("\n===== 示例5：包含不可哈希成员 =====")
    数据 = ([1], [1], {"x": 1}, {"x": 1}, [2])
    print("结果:", 取重复成员数量(数据))

    print("\n===== 示例6：应用场景-统计重复订单编号种类数 =====")
    订单编号 = ("ORD-001", "ORD-002", "ORD-001", "ORD-003", "ORD-002")
    print("结果:", 取重复成员数量(订单编号))



