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

Python中列表引用类实例并对比整数属性实现结果输出的方法

类实例列表属性比较操作的修正方案

通过列表存储类实例、遍历比较实例的整数属性、筛选符合条件的结果列表,完全是Python支持的常规开发操作,不存在语言层面不允许的限制,原代码无法正常运行是几处语法、逻辑疏漏导致的。

原代码存在的核心问题

  • 缩进语法错误:if obj.y > b: 判断行的缩进与上下文不对齐,会直接触发IndentationError,导致程序无法启动
  • 逻辑状态未重置:循环内的comparison判断标记,没有在每次遍历新实例时重置为初始的True值,只要某次判断触发了comparison=False,后续遍历的所有实例都会沿用这个False状态,永远无法被筛选到结果列表中
  • 内置名称覆盖:直接用list作为自定义列表的变量名,会覆盖Python内置的list类型,后续如果需要调用列表的内置方法或类型转换逻辑,会出现隐蔽的运行错误
  • 占位变量未赋值:创建类实例时传入的m,x,y,z、比较阈值a,b,c都是无实际值的占位标注,运行时会触发NameError找不到变量

可直接运行的正确参考实现

# 定义类
class class1: 
    def __init__(self, m, x, y, z): 
        self.m = m
        self.x = x  # 整数属性
        self.y = y  # 整数属性
        self.z = z  # 整数属性

# 初始化存储实例的列表(避免使用内置名list)
instance_list = [] 
compare = []  

# 追加实际有值的类实例
instance_list.append(class1(1, 10, 20, 30))
instance_list.append(class1(2, 15, 25, 35))
instance_list.append(class1(3, 5, 15, 25))

# 实际赋值的比较阈值
a = 12
b = 22
c = 32

for obj in instance_list:
    # 每个实例遍历前重置判断标记
    comparison = True
    if obj.x > a:  
        comparison = False
    if obj.y > b:
        comparison = False
    if obj.z > c:
        comparison = False
    if comparison:
        compare.append(obj.m)

print(compare)

上述代码运行后,会按照“实例x属性不大于a、y属性不大于b、z属性不大于c”的规则筛选,最终输出符合要求的m属性值列表[1, 3],可直接复用为同类场景的实现参考。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 22:24:03