假设你想建立一副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
, Suit
和 Value
. 这样就可以了。然而,现在我想创建另一个类,名为 Decks
含有 k 卡牌,取决于用户的输入。我只是不知道如何正确实例化这个类。有什么Pythonic的方法可以实例化出 Decks
以致于它要么包含 k Deck
对象,或52 * k Card
对象?
编辑。Deck
包含几个方法,如 shuffle()
和 deal()
. 我想从以下地方访问这些方法 Decks
这样我就可以把所有的 k 一次出牌或出52张*中的一张。k 牌,而不需要写逻辑来处理几个孤立的对象(处理第53张牌需要处理第2副牌中的第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