我是这里的新手,并且是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方法不起作用?我应该改变什么?谢谢您的帮助。
答案 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
方法的工作方式。与此不同的是,此列表中的每个元素不仅是字符串,而且是对该卡的实际引用。在这种特殊情况下,这几乎没有用,因为您只打印列表(不返回列表)。