Python 基于同一父类多次实例化子类
假设您想要构建一副52张扑克牌。我有以下Python中的Python 基于同一父类多次实例化子类,python,oop,object,super,superclass,Python,Oop,Object,Super,Superclass,假设您想要构建一副52张扑克牌。我有以下Python中的Deck类: class Deck(collections.deque): """Creates a deck of 52 playing cards""" def __init__(self) -> None: super().__init__( map( Card, itertools.product(
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
。这很有效。但是,现在我想创建另一个名为deck
的类,它包含k个deck,具体取决于用户输入。我就是不知道如何正确地实例化这个类。什么是Pythonic方法来实例化Deck
,使其包含kDeck
对象或52*kCard
对象
编辑:
Deck
包含几种方法,例如shuffle()
和deal()
。我想从牌组
中访问这些方法,这样我可以一次洗牌所有k牌组,或者处理52*k牌中的一张,而无需编写逻辑来处理几个孤立的对象(处理第53张牌需要处理牌组2中的第一张牌,等等)。我简化了您的设置,但是,使用这种更简单的设置,下面的代码应该可以工作。希望有帮助
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
Deck
可能只是一个Deck
对象的列表<代码>[Deck()用于范围内(42)]谢谢,这可能是一种方法。请注意,Deck
对象有几种方法,例如shuffle()
和deal()
(未显示,因为它会以某种方式弄乱样式)。如何访问这些?输出现在是一个列表对象。您可以在每个Deck
实例上访问它<代码>套牌[0]。shuffle()等。谢谢,但在这种情况下,无法对套牌进行洗牌,只能对每个套牌
对象进行洗牌。我会相应地更新我的问题。是的。“洗牌”意味着什么?你只能洗牌每副牌。如果你想洗牌每一副牌,你需要迭代你的牌列表并洗牌每一副牌。如果你想洗牌你的牌组列表,也就是说,将牌组实例列表随机排列,然后你洗牌该列表。这与牌组无关。洗牌。当然,您可以在一个假设的Deck
类上实现它作为一个方法,这个类同样与Deck
无关。