【发布时间】:2016-12-19 17:21:32
【问题描述】:
假设有三个列表,第三个是包含前两个的列表:
Friendly_List = list()
Enemy_List = list()
Battle_Space = list([Friendly_List, Enemy_List])
还有一个地精类:
class Goblin(object):
def __init__(self):
self.Name = "Goblin"
self.HP = random.randint(15,20)
self.Damage = random.randint(5,10)
我创建了一个 Goblin 类的实例:
x = Goblin()
然后放入Friendly_List:
Friendly_List.append(x)
现在假设地精英勇地死去,必须从战场上移除。如果我执行 Friendly_List.remove(x),则可以毫无问题地移除地精。
如果我执行 Battle_Space.remove(x),它表示 x 不在列表中 - 即使 x 在属于 Battle_Space 列表的列表之一中。
我想我真正想问的是:实现 Battle_Space.remove(x) 所需行为的正确方法是什么?移除一个深层的实例?
【问题讨论】:
-
您的问题有两种可能的解释:您是想仅在特定“位置”删除
x,还是在它可能出现的任何地方删除它? -
您必须指定要从哪个列表中删除:
Battle_Space[0].remove(x)。 -
我想删除可能出现在 Battle_Space 列表中的 x。
-
@Kos 暗示
Goblin有可能同时出现在友军和敌军名单中? -
尝试对变量和属性使用 PEP-8 命名约定。以大写字母开头的名称表示一个类,如果它是一个变量或属性,它会混淆其他程序员。变量和属性名称全部小写,必要时加下划线。
标签: python python-3.x oop object