「in」キーワードを私が作成したクラスにどのように拡張できますか?カードクラスでカードゲームを作っています。プレイヤーの手である別のクラスがあります。基本的に、あるカードが手札にあるかどうかを確認したいです。例えは以下のとおりです。
>>> 5 in range(0, 5)
True
これは私のコードです。Handクラスがあり、Card()がHand()にあるかどうかを確認したい
また、私はこのクラスの概念に不慣れです。私はこのすべてがどのように機能するかを理解し始めたばかりです。lenメソッドを正しく実装しましたか?
class Card:
def __init__(self, suit, rank):
# self.suit > str
# self.rank > str
if (suit in SUITS) and (rank in RANKS):
self.suit = suit
self.rank = rank
else:
self.suit = None
self.rank = None
print "Invalid card:", suit, rank
def __str__(self):
return self.suit + self.rank
def get_suit(self):
return self.suit
def get_rank(self):
return self.rank
# define hand class
class Hand:
# A list of Card objects
# adding cards to the hand should remove cards from the deck.
def __init__(self):
self.hand = []
def __str__(self):
cards = []
for card in self.hand:
cards += [card.get_suit() + card.get_rank()]
return str(cards)
def add_card(self, card):
return self.hand.append(card)
def __len__(self):
counter = 0
for card in self.hand:
counter +=1
return counter
OK、それで私はこのコードをハンドクラスに追加しました:
def __contains__(self, card):
return card in self.hand
しかし、コードをテストしようとしましたが、機能しません。
c = Card('H','A')
h = Hand()
h.add_card(Card('S','K'))
h.add_card(Card('D','A'))
h.add_card(Card('H','A'))
print 'hand=', h
print 'c=', c
print 'c in h', c in h
ターミナルでFalseと表示されます...なぜですか??