python无法从类中的方法打印列表

时间:2019-09-27 21:07:42

标签: python-3.x class

我是这里的新手,并且是python的初学者。我有一些代码,我想打印一张卡的列表,但是我的程序不是打印此列表,而是在内存中打印对象名称的列表(我不知道怎么称呼它)

import random

class Card:
    def __init__(self, figure, colour):
        self.colour = colour
        self.figure = figure

    def show(self):
        print(self.figure + self.colour)

class Deck:

    def __init__(self):
        self.deck = []
        self.createDeck()

    def createDeck(self):
        for colour in ["h", "d", "c", "s"]:
            for figure in ["2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A"]:
                self.deck.append(Card(figure, colour))

    def show(self):
        for card in self.deck:
            card.show()

    def showListOfCards(self):
        print(self.deck)

if __name__ == "__main__":
    deck = Deck()
    deck.createDeck()
    deck.showListOfCards()

为什么showListOfCards方法不起作用?我应该改变什么?谢谢您的帮助。

1 个答案:

答案 0 :(得分:3)

要执行此操作,您可以更改Card()类的表示方式。您可以使用内置的魔术方法__repr__进行此操作。这是一个示例:

class Card:
    def __init__(self, figure, colour):
        self.colour = colour
        self.figure = figure

    def show(self):
        print(self.figure + self.colour)

    def __repr__(self): # How the cards appear in your list
        return str(self.figure) + str(self.colour)

卡片现在按其形状和颜色显示,类似于您的show方法的工作方式。与此不同的是,此列表中的每个元素不仅是字符串,而且是对该卡的实际引用。在这种特殊情况下,这几乎没有用,因为您只打印列表(不返回列表)。