【问题标题】:Using self_value in another class在另一个类中使用 self_value
【发布时间】:2020-02-18 22:31:12
【问题描述】:

我正在尝试更多地了解课程,因此我已经使用多个课程构建了一副卡片。目标是能够用套牌玩多个纸牌游戏。 我有一个基础课,叫做 PlayingCard:

class PlayingCard:
def __init__(self, suit, value):
    self.suit = suit
    self.value = value

编号卡、杰克卡、皇后卡等不同的子类定义为:

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()-instance 来检查例如手中是否有任何对子或是否有顺子等。 我有这样的想法:

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)

问题是我无法从手牌中提取价值。我意识到它们仅在 PlayingCard 类中被定义为 self.value,但是有没有办法将它们提取出来以在 BestHand 类中使用?

【问题讨论】:

  • 值将是[card.value for card in hand.hand]
  • Hand() 类的实例中(您称它为hand),您将列表hand 存储为对象属性。因此,要访问此列表,您需要访问 hand.hand

标签: python function class oop


【解决方案1】:

您有一个名为 hand 的对象,它的类型为 Hand,这意味着它有一个名为 hand 的属性,它是 Card 对象的列表。 hand.hand 是该对象中 Card 对象的列表。 [card.value for card in hand.hand] 将获取该卡片列表中每张卡片的值

【讨论】:

    猜你喜欢
    • 2017-08-16
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2013-02-17
    相关资源
    最近更新 更多