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

Python面向对象编程:类的用途及动态筛选实例方法问询

类的实际用途与动态实例操作解决方案

一、即使实例不多,类依然有意义

  • 封装性:把物品的属性(item_id、item_name)和对应的操作(比如show_list)打包在一起,逻辑更紧凑。要是用零散变量或字典,打印操作得写单独函数,而类里的方法天然属于这个实例,调用起来更直观。
  • 可扩展性:现在实例少,以后要加功能(比如给物品加价格、计算折扣),直接在类里新增方法就行,不用到处改代码。比如加个def get_discounted_price(self, rate):,所有实例都能直接用。
  • 可读性与维护性:看到Items类,别人一眼就知道这是处理物品相关逻辑的,属性和方法全在类里,比一堆杂乱的变量好理解、好维护。

二、根据用户输入动态筛选并操作实例

你之前的问题在于:输入的是字符串(比如"idA"),不是Items实例对象,所以直接调用show_list()会报错;第二个循环没做判断,所以会遍历所有实例。下面是两种可行的解决方案:

方法1:遍历列表查找(适合少量实例)

class Items:
    def __init__(self, item_id, item_name):
        self.item_id = item_id
        self.item_name = item_name
    
    def show_list(self):
        print(self.item_id, self.item_name)

# 创建实例列表
item_list = [Items('idA', 'A'), Items('idB', 'B')]

# 获取用户输入
selected_id = input("enter item id: ")

# 遍历查找匹配实例
for item in item_list:
    if item.item_id == selected_id:
        item.show_list()
        break
else:
    # 循环正常结束说明没找到匹配项
    print(f"找不到ID为{selected_id}的物品")

方法2:用字典存储实例(查找效率更高)

如果实例数量较多,用字典以item_id为键存储实例,查找速度更快:

class Items:
    def __init__(self, item_id, item_name):
        self.item_id = item_id
        self.item_name = item_name
    
    def show_list(self):
        print(self.item_id, self.item_name)

# 用字典存储实例
item_dict = {
    'idA': Items('idA', 'A'),
    'idB': Items('idB', 'B')
}

selected_id = input("enter item id: ")
if selected_id in item_dict:
    item_dict[selected_id].show_list()
else:
    print(f"找不到ID为{selected_id}的物品")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:25:42