有人可以让我知道如何使用面向对象打印出甲板上的卡片列表吗?我正在上课并试图学习Python 2.我试着分配d = Deck(),然后打印d.cards,但它只返回所有52张卡片的列表中的内存位置。使用OOP在Python中打印卡片列表?
我错过了什么?
import random
rank = [2,3,4,5,6,7,8,9,10,'Jack','Queen','King','Ace']
suit = ['Diamonds','Clubs','Hearts','Spade']
class Card(object):
def __init__(self,rank,suit):
self.rank = rank
self.suit = suit
def __str__(self):
return str(self.rank) + ' of ' + str(self.suit)
def grab_suit(self):
return self.suit
def grab_rank(self):
return self.rank
def draw(self):
print (self.suit + self.rank)
class Deck(object):
def __init__(self):
self.cards = []
for i in rank:
for j in suit:
self.cards.append(Card(i,j))
def __str__(self):
return self.cards()
谢谢。我改变了def__str __(self)部分并尝试打印d。在() ----> 1打印d 类型错误 TypeErrorTraceback(最新最后调用) :__str__返回非字符串(类型但是我得到一个错误列表) 你能解释为什么吗? –
paulnsn
@paulnsn刚刚在修复中编辑过 - “__str__”的返回值需要是一个字符串,所以我在另一个'str'调用中包装列表。 –