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

Python实例变量操作疑问:调用addorder后打印新实例orders为空

问题原因

你犯了新手常见的错误——创建了两个完全独立的Customer对象:

  • 第一行代码Customer('308','John').addorder((1,2,3,4))确实创建了一个Customer实例并添加了订单,但这个实例没有被赋值给任何变量,执行完后就被Python回收了。
  • 第二行print(Customer('308','John'))是重新创建了一个全新的Customer实例,这个新实例的orders列表是__init__方法初始化的空列表,所以打印结果是[]。
修正方案

把创建的实例保存到变量中,确保后续操作的是同一个对象:

class Customer(object):
    def __init__(self, number, name):
        self.name = name
        self.number = number
        self.orders = []
        
    def addorder(self, order):
        self.orders.extend(order) 
        return self.orders

    def __str__(self):
        return str(self.orders)


# 将实例赋值给变量john
john = Customer('308','John')
john.addorder((1,2,3,4))

# 打印同一个实例
print(john)

运行这段代码就能输出你期望的[1,2,3,4]。

如果只是想快速看到结果,也可以直接打印addorder的返回值(该方法返回更新后的orders列表),但这种方式无法保留实例供后续操作:

print(Customer('308','John').addorder((1,2,3,4)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:36:21