Я пытаюсь узнать больше о классах, поэтому я собрал колоду карт, используя несколько классов. Цель игры - сыграть в несколько карточных игр с колодой. У меня есть базовый класс c, называемый PlayingCard:
class PlayingCard:
def __init__(self, suit, value):
self.suit = suit
self.value = value
и различные подклассы для пронумерованных карт, карт валетов, карт ферзя и т. Д. c. определяется как:
class NumberedCards(PlayingCard):
def __init__(self, suit, value):
self.value = value
super().__init__(suit, self.value)
class JackCard(PlayingCard):
def __init__(self, suit):
self.value = 11
super().__init__(suit, self.value)
...and so on
Затем я строю свою колоду карт в новом классе 'Колода':
class Deck:
def __init__(self):
self.deck = []
def create_deck(self):
for suit in Suit:
for i in range(2, 11):
self.deck.append(NumberedCards(suit.value, i))
self.deck.append(JackCard(suit.value))
...
Наконец, у меня есть класс под названием Hand:
class Hand:
def __init__(self):
self.hand = []
где у меня есть функции для вытягивания карт из колоды и помещения их в self.hand
Теперь я хочу создать еще один класс с другими функциями, где я могу использовать Hand()
-экземпляр проверить, есть ли, например, какие-либо пары в руке или есть стрит и т. д. c. Я имею в виду что-то вроде этого:
class BestHand:
def __init__(self):
...
def check_pairs(self, cards):
"""Here, for example, I want to extract the value of
each card on hand and put them in a new list for easier comparison"""
, где я могу проверить карты в руке, позвонив в стиле
hand = Hand()
test = BestHand()
test.check_pairs(hand)
Проблема в том, что я могу t извлечь значение из карт. Я понимаю, что они определены только как self.value
в классе PlayingCard, но есть ли способ извлечь их для использования в классе BestHand?