Python 我想在洗牌方法中调用我的牌组类,在洗牌之前恢复牌组,这样我就不会洗牌少于52张牌的牌组

Python 我想在洗牌方法中调用我的牌组类,在洗牌之前恢复牌组,这样我就不会洗牌少于52张牌的牌组,python,class,oop,Python,Class,Oop,好了,伙计们,我正在上一堂牌组课,我想制作我的牌组,这样当牌发完后,我可以在洗牌时恢复牌组。我认为它可以用相同的类名调用类,但python会引发“TypeError:restore_deck()缺少1个必需的位置参数:'self'” 类卡: 定义初始(自我、价值、适合): 自我价值=价值 西服 舱面: 定义初始化(自): 套装=[“红心”、“钻石”、“梅花”、“黑桃”] 值=['A'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'、'10'、'J'、'Q'、'K'] self.c

好了,伙计们,我正在上一堂牌组课,我想制作我的牌组,这样当牌发完后,我可以在洗牌时恢复牌组。我认为它可以用相同的类名调用类,但python会引发“TypeError:restore_deck()缺少1个必需的位置参数:'self'”

类卡:
定义初始(自我、价值、适合):
自我价值=价值
西服
舱面:
定义初始化(自):
套装=[“红心”、“钻石”、“梅花”、“黑桃”]
值=['A'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'、'10'、'J'、'Q'、'K']
self.cards=[Card(value,suit)for suit for value in values]
def随机播放(自):
def恢复组(自身):
self=Deck()
如果self.count()<52:#|问题就出在这里!
恢复甲板(自身)#|
洗牌(自我牌)
回归自我

我认为您的意思是从牌组中的牌列表中移除牌,您要做的是洗牌所有52张牌,为此,我们可以随机导入模块,当我们要洗牌牌时,我们可以重新创建牌列表,然后洗牌整个列表。我添加了repr方法,以便您可以清楚地看到输出。如果您不想重新生成整个列表,您可以将“删除”的卡存储起来,并在洗牌之前将它们重新添加到列表中

import random


class Card:
    def __init__(self, value, suit):
        self.value = value
        self.suit = suit

    def __repr__(self):
        return str((self.suit, self.value))


class Deck:
    def __init__(self):
        self.suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
        self.values = ['A', '2', '3', '4', '5', '6',' 7', '8', '9', '10', 'J', 'Q', 'K']
        self.cards = [Card(value, suit) for suit in self.suits for value in self.values]

    def shuffle(self):
        self.cards = [Card(value, suit) for suit in self.suits for value in self.values]
        random.shuffle(self.cards)


d = Deck()
print(d.cards)
d.shuffle()
print(d.cards)

即使在shuffle方法之外执行恢复功能也可以,但我也不能这样做
import random


class Card:
    def __init__(self, value, suit):
        self.value = value
        self.suit = suit

    def __repr__(self):
        return str((self.suit, self.value))


class Deck:
    def __init__(self):
        self.suits = ["Hearts", "Diamonds", "Clubs", "Spades"]
        self.values = ['A', '2', '3', '4', '5', '6',' 7', '8', '9', '10', 'J', 'Q', 'K']
        self.cards = [Card(value, suit) for suit in self.suits for value in self.values]

    def shuffle(self):
        self.cards = [Card(value, suit) for suit in self.suits for value in self.values]
        random.shuffle(self.cards)


d = Deck()
print(d.cards)
d.shuffle()
print(d.cards)