具有相同var值的对象似乎是List中index()方法的一个对象

时间:2015-04-25 18:16:26

标签: python

所以我有一张型号卡。在项目中,我创建了这个模型的cardData包装器:

card = Card.objects.get(id=someId)
cardData = {}
cardData.id = card.id
cardData.title = card.title

我在牌组列表中放了30多个cardDatas:

deck = [cardData1, cardData2 ..., cardData17]

最后在游戏的某处,我在cardCata17上有一个链接。其中包含甲板列表。但同时也有cardData2和相同的参数,因为它也是从同一个模型创建的。当我尝试获取cardData17的索引时:

index = deck.index(cardData17) 

它返回index = 2,而不是17,因为cardData 2也有相同的id和title。这很奇怪,我花了很多时间来理解这个问题。是真的还是我在这个假设中犯了错误。

1 个答案:

答案 0 :(得分:0)

制作卡片数据的对象而不是字典。对象将通过其内存位置进行标识,该位置是唯一的,而不是其内容。

class CardData(object):
  def __init__(self, id, title):
    self.id = id
    self.title = title

card = Card.objects.get(id=someId)
cardData = CardData(card.id, card.title)