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

如何查找含特定属性值的类实例并执行属性更新操作?

Python中遍历类实例实现类似SQL的查询与更新操作

前提说明

Python不会自动跟踪类的所有实例,所以需要手动维护一个容器(比如类属性列表)来存储所有People实例,这是实现后续操作的基础。


1. 查找符合条件的实例并获取name属性(类比SQL SELECT)

首先定义People类,同时维护所有实例的列表:

class People:
    # 类属性:存储所有People实例
    all_instances = []

    def __init__(self, name, email_address):
        self.name = name
        self.email_address = email_address
        # 实例化时自动加入全局列表
        People.all_instances.append(self)

实现查询逻辑

  • 如果只需要第一个匹配的实例的name:
target_name = None
for person in People.all_instances:
    if person.email_address == 'spam_me@email.com':
        target_name = person.name
        break  # 找到后终止遍历
  • 如果需要获取所有匹配实例的name(支持多个结果):
matching_names = [p.name for p in People.all_instances if p.email_address == 'spam_me@email.com']

对应的SQL类比语句:

SELECT name FROM People WHERE email_address='spam_me@email.com';

2. 更新符合条件的实例属性(类比SQL UPDATE)

遍历实例列表,直接修改匹配实例的email_address属性:

for person in People.all_instances:
    if person.email_address == 'spam_me@email.com':
        person.email_address = 'no@domain.tld'

对应的SQL类比语句:

UPDATE People SET email_address=REPLACE(email_address,'spam_me@email.com','no@domain.tld');

实际业务场景适配(工业机器主从管理)

将上述逻辑迁移到工业机器场景,只需替换类名和属性即可:

class Machine:
    all_machines = []

    def __init__(self, machine_id, role, status='available'):
        self.machine_id = machine_id
        self.role = role  # 'lead' 或 'slave'
        self.status = status
        Machine.all_machines.append(self)

# 示例1:查找当前可用的主机器
current_lead = None
for machine in Machine.all_machines:
    if machine.role == 'lead' and machine.status == 'available':
        current_lead = machine
        break

# 示例2:轮换主机器(均衡损耗)
if current_lead:
    current_lead.role = 'slave'
    # 选第一个可用的从机器升级为主机器
    for machine in Machine.all_machines:
        if machine.role == 'slave' and machine.status == 'available':
            machine.role = 'lead'
            break

内容的提问来源于stack exchange,提问作者bradboy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:00:13