下面是一些测试代码来描述我的问题。我已经创建了两个类别如下...无法从另一个对象的列表中删除对象
class Card:
def __init__(self, suit, rank):
self.suit = suit
self.rank = rank
class Deck:
def __init__(self):
self.cards = []
for suit in range(4):
for rank in range(13):
card = Card(suit, rank)
self.cards.append(card)
d = Deck()
d.cards.remove(Card(1, 1))
最后删除命令后,我得到以下错误:
Traceback (most recent call last):
File "<pyshell#111>", line 1, in <module>
d.cards.remove(Card(1, 1))
ValueError: list.remove(x): x not in list
有谁知道这是为什么发生?我可以确认d对象被从(0,0)到(3,13)的总共52个Card对象初始化。为什么它没有使用删除模块检测到这一点?此外,我可以在初始化后执行以下命令,并且没有问题。
d.cards.append(Card(1, 1))
d.cards.remove(Card(1, 1))
这增加了,然后删除刚添加到列表中的卡,但它不会删除使用相同的值初始化卡。
给你的'Card'类一个'__eq__'方法。 –