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

Python类中给玩家物品列表添加元素失败,求解决方案

问题解答

首先说你第一个错误:Python里的列表没有push方法,要往列表末尾添加元素,直接用append就行,根本不需要写辅助类。比如:

player.items.append("a rock")
print(player.items)
# >> ['movie stub', 'keys', 'army man', 'a rock']

然后说你写辅助类后出现的问题:你执行player.items = List(["a rock"])的时候,是把原来的items列表直接替换成了一个新的List实例,这个新实例里只有"a rock",自然覆盖了原有的内容。

如果非要用你写的List类来实现push功能,有两种正确的方式:

方式一:初始化Player时就用List类型存储物品

class List(list):
  def push(self, x):
    self.append(x)

class Player():
  def __init__(self, name, items):
    self.name   = name
    self.items  = List(items)  # 将传入的列表转为List类型

player = Player("Joey", ["movie stub", "keys", "army man"])
player.items.push("a rock")
print(player.items)
# >> ['movie stub', 'keys', 'army man', 'a rock']

方式二:将原有items列表转为List类型后再操作

如果不想修改Player类,也可以先把现有的player.items转成List对象,再调用push:

class List(list):
  def push(self, x):
    self.append(x)

# 先转换原有列表
player.items = List(player.items)
player.items.push("a rock")
print(player.items)
# >> ['movie stub', 'keys', 'army man', 'a rock']

不过还是建议直接用Python内置列表的append方法,没必要额外封装一个类,既简洁又符合Python的惯用写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:15:39