【发布时间】: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