Использование self_value в другом классе - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь узнать больше о классах, поэтому я собрал колоду карт, используя несколько классов. Цель игры - сыграть в несколько карточных игр с колодой. У меня есть базовый класс 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?

1 Ответ

1 голос
/ 19 февраля 2020

У вас есть объект с именем hand, он имеет тип Hand, что означает, что у него есть атрибут с именем hand, представляющий собой список Card объектов. hand.hand - это список Card объектов в этом объекте. [card.value for card in hand.hand] получит значение для каждой карты в этом списке карт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...