You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python无SQL实现内存存储用户信息及搜索功能开发求助

解决方案

首先,你的代码存在几个可优化点,同时需要补充数据存储与核心功能的实现逻辑:

1. 修正Human类基础问题

  • 你的Human类继承了ABC但未定义任何抽象方法,完全没必要保留相关导入与继承。
  • add_human静态方法需要在实例化时自动触发,否则_HumansTotal的统计毫无意义。
  • list方法的参数冗余,它只需要返回当前实例的信息即可,建议重命名为get_info或直接实现__str__方法来简化打印。

2. 添加实例存储逻辑

需要一个容器来保存所有创建的Human实例,我们可以用类变量_instances实现,在__init__方法中将当前实例自动加入这个列表。

3. 实现核心功能

  • 列出所有数据:添加类方法返回所有实例的格式化信息。
  • 按姓名搜索:添加类方法接收姓名参数,过滤出匹配的实例。

完整代码示例

class Human:
    # 类变量:存储所有Human实例、统计总人数
    _instances = []
    _HumansTotal = 0

    def __init__(self, name, surname, age, phone):
        self._name = name
        self._surname = surname
        self._age = age
        self._phone = phone
        # 实例化时自动完成存储与计数更新
        Human._instances.append(self)
        Human._HumansTotal += 1

    def get_info(self):
        # 返回当前实例的格式化信息
        return f"姓名: {self._name}, 姓氏: {self._surname}, 年龄: {self._age}, 手机号: {self._phone}"

    @classmethod
    def list_all_humans(cls):
        # 列出所有存储的用户数据
        if not cls._instances:
            return "暂无用户数据"
        return "\n".join([human.get_info() for human in cls._instances])

    @classmethod
    def search_by_name(cls, target_name):
        # 按姓名搜索匹配的用户
        matches = [human.get_info() for human in cls._instances if human._name == target_name]
        if not matches:
            return f"未找到姓名为{target_name}的用户"
        return "\n".join(matches)

# 功能测试
if __name__ == "__main__":
    # 添加测试用户
    Human("张三", "张", 25, "13800138000")
    Human("李四", "李", 30, "13900139000")
    Human("张三", "王", 28, "13700137000")

    # 打印所有用户数据
    print("所有用户数据:")
    print(Human.list_all_humans())

    # 按姓名搜索
    print("\n搜索姓名为张三的用户:")
    print(Human.search_by_name("张三"))

    print("\n搜索姓名为赵五的用户:")
    print(Human.search_by_name("赵五"))

代码说明

  • _instances类变量负责在内存中保存所有Human实例,仅在程序运行期间有效,退出后自动销毁。
  • __init__方法自动完成实例存储与人数统计,无需手动调用额外方法。
  • get_info方法统一格式化单个用户的信息,方便展示。
  • list_all_humans类方法遍历所有实例,返回汇总的用户数据。
  • search_by_name类方法通过姓名匹配过滤实例,返回搜索结果。

内容的提问来源于stack exchange,提问作者Markéta Pipreková

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:54:31