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

Python OOP中给Person实例添加WalkieTalkie时出现共享实例问题求助

问题原因分析:所有Person实例共享同一对讲机列表

你遇到的问题核心是把可变对象(列表)定义成了类属性,导致所有Person实例共享同一个列表。

具体原因

当你在Person类中这样定义时:

class Person:
    walkie_talkies = []  # 这是类属性,所有实例共用同一个列表
    def add_walkie_talkie2(self, talkie):
        self.walkie_talkies.append(talkie)

列表是可变对象,类属性会被该类的所有实例共享。不管你创建多少个Person实例,它们的walkie_talkies指向的都是同一个内存地址里的列表。所以任何一个实例调用add_walkie_talkie2添加对讲机,都会修改这个共享列表,最终所有实例的walkie_talkies内容完全一致。

解决方法

把walkie_talkies改成实例属性,在__init__方法中初始化,让每个实例拥有独立的列表:

class Person:
    def __init__(self):
        self.walkie_talkies = []  # 每个实例创建时生成自己的列表
    def add_walkie_talkie2(self, talkie):
        self.walkie_talkies.append(talkie)

这样每个Person实例的walkie_talkies都是独立的,添加对讲机时只会修改当前实例的列表,不会影响其他实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:30:58