Вот несколько тестовых кодов для описания моей проблемы. Я создал два класса, как следует ...Невозможно удалить объекты из списка в другом объекте
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 инициализируется 52 объектами Card Card (от 0, 0) до (3, 13). Почему он не обнаруживает это с помощью модуля удаления? Кроме того, после инициализации я могу выполнить следующие команды, и это работает без проблем.
d.cards.append(Card(1, 1))
d.cards.remove(Card(1, 1))
Это добавляет, а затем удалить карту, которая была только что добавили к списку, но не вынимайте карту, которая была инициализирована с тем же значением.
Дайте классу 'Card'' метод '__eq__'. –