我创建了一个下面列出的类
class Card:
suitList = ["Clubs", "Diamonds", "Hearts", "Spades"]
rankList = ["1", "2", "3", "4"]
def __init__(self, suit=0, rank=0):
self.suit = suit
self.rank = rank
self.cards = []
然后我在卡片列表中添加了几个项目。
card1 = Card(1, 1)
card2 = Card(2, 2)
card3 = Card(3, 1)
cards.append(card1)
cards.append(card2)
cards.append(card3)
接下来,我测试card1是否在卡片列表中。
card1 in cards
Out[451]: True
这似乎很好。但是,
card = Card(1,1)
card in cards
Out[453]: False
“card”看起来与card1相同。
我的问题是:为什么“卡”不在列表卡中?
答案 0 :(得分:1)
尝试查看card == card1
的输出。他们不一样,即使你认为他们一定是这样。
这是因为在Python中,相等的默认检查是通过对象标识。 card
是与card1
不同(但相似)的对象。
为了让Python知道如何比较Card
个对象的相等性,你必须在类上定义一个__eq__
方法。
class Card(object):
...
def __eq__(self, other):
return self.suit == other.suit and self.rank == other.rank