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
相关产品推荐
相关产品推荐

