基于同一父类多次实例化子类。

问题描述 投票:0回答:1

假设你想建立一副52张扑克牌。我有以下内容 Deck 类。

class Deck(collections.deque):
    """Creates a deck of 52 playing cards"""
    def __init__(self) -> None:
        super().__init__(
            map(
                Card,
                itertools.product(
                    Suit.__members__.values(), Value.__members__.values()
                ),
            )
        )

正如我们所看到的,它继承自 collections.deque 并依托其他三类,即 Card, SuitValue. 这样就可以了。然而,现在我想创建另一个类,名为 Decks含有 k 卡牌,取决于用户的输入。我只是不知道如何正确实例化这个类。有什么Pythonic的方法可以实例化出 Decks 以致于它要么包含 k Deck 对象,或52 * k Card 对象?

编辑。Deck 包含几个方法,如 shuffle()deal(). 我想从以下地方访问这些方法 Decks这样我就可以把所有的 k 一次出牌或出52张*中的一张。k 牌,而不需要写逻辑来处理几个孤立的对象(处理第53张牌需要处理第2副牌中的第1张牌等)。

python oop object super superclass
1个回答
1
投票

我已经简化了你的设置,但有了这个更简单的设置,下面的代码应该可以工作。希望能帮到你

import collections
import itertools

class Deck(collections.deque):
    """Creates a deck of 52 playing cards"""
    def __init__(self) -> None:
        super().__init__(
                itertools.product(
                    range(13), ['♧','♢','♥','♤']
            )
        )


class Decks(collections.deque):
  def __init__(self, decks):
    deck = Deck()
    for i in range(decks-1):
      deck.extend(Deck())
    super().__init__(
      deck
    )

decks = Decks(3)
print(len(decks))
>> 156
© www.soinside.com 2019 - 2024. All rights reserved.