首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在另一个类中使用self_value

在另一个类中使用self_value
EN

Stack Overflow用户
提问于 2020-02-19 06:31:13
回答 1查看 30关注 0票数 0

我正在尝试学习更多关于类的知识,所以我使用多个类构建了一副卡片。我们的目标是能够用这副牌玩多个纸牌游戏。我有一个基本的类,叫做PlayingCard:

代码语言:javascript
运行
复制
class PlayingCard:
def __init__(self, suit, value):
    self.suit = suit
    self.value = value

以及用于编号卡片、插孔卡片、皇后卡片等的不同子类,其定义如下:

代码语言:javascript
运行
复制
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

然后我在一个新的类‘deck’中构建我的一副牌:

代码语言:javascript
运行
复制
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的类:

代码语言:javascript
运行
复制
class Hand:
def __init__(self):
    self.hand = []

在那里我有一些函数可以从牌组中抽出卡片并将它们放入self.hand

我现在想创建另一个具有不同函数的类,在这个类中,我可以使用Hand()-instance来检查手中是否有任何对,或者是否有直线等。我的脑海中有类似的东西:

代码语言:javascript
运行
复制
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"""

在那里,我可以通过调用样式为

代码语言:javascript
运行
复制
hand = Hand()
test = BestHand()
test.check_pairs(hand)

问题是我不能从手牌中提取价值。我知道它们只在PlayingCard类中被定义为self.value,但是有没有办法将它们提取出来用在BestHand类中呢?

EN

回答 1

Stack Overflow用户

发布于 2020-02-19 06:43:47

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60290382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档