列表中的所有类对象都具有相同的最后增加值

时间:2019-05-31 09:44:31

标签: python python-3.x

所以我正在尝试学习Python, 我正在尝试一个代表整个卡片组的课程。 因此,在创建实例时,它应生成包含卡片的列表。 该卡还带有对象“卡”。

问题是,当我通过将卡片添加到列表中来生成卡片时,所有项目都会被最后一个输入覆盖

我的代码应该一直生成2个黑桃,直到黑桃王。打印时-打印出13行《黑桃王》。

我想念什么?

这是我的卡类:

class Card:
    def __init__(self, color, cvalue):
        if color.lower() == "s":
            self.color = "Spades"
        elif color.lower() == "h":
            self.color = "Hearts"
        elif color.lower() == "d":
            self.lower = "Diamond"
        else:
            self.lower = "Clubs"
        if cvalue.isnumeric():
            Card.value = int(cvalue)
            if cvalue == '11':
                Card.card_name = 'Ace'
            else:
                Card.card_name = cvalue
        else:
            Card.value = 10
            if cvalue.lower() == 'j':
                Card.card_name = "Jack"
            elif cvalue.lower() == 'q':
                Card.card_name = "Queen"
            else:
                Card.card_name = "King"

    def __str__(self):
        return f'{Card.card_name} of {self.color}'

这是DeckOfCards类的定义:

class DeckOfCards():
    deck = []
    def __init__(self):
        for x in range(2,12):
        DeckOfCards.deck.append(Card('s', str(x)))
        DeckOfCards.deck.append(Card('s', 'j'))
        DeckOfCards.deck.append(Card('s', 'q'))
        DeckOfCards.deck.append(Card('s', 'k'))

这是显示卡片的测试代码

if __name__ == "__main__":
    c = Card('s','11')
    d = DeckOfCards()
    for x in d.deck:
        print(x)

0 个答案:

没有答案