我在OOP上有一个bash。这是我的代码。
class Cards:
Suit = ['C','S','H','D']
Rank = list(range(1,11)) + ['K','Q','J']
def __init__(self,Suit,Rank):
self.suit = Suit
self.rank = Rank
def __str__(self):
card = '[SUIT: %s, RANK: %s]' % (self.suit, self.rank)
return card
class Deck(Cards):
def Show():
return [Cards(i,j) for i in Cards.Suit for j in Cards.Rank]
我想知道为什么Deck中Show属性的return语句返回这样的列表....
[<__main__.Cards object at 0x10592bc88>, <__main__.Cards object at 0x10592bcc0>,....]
我看过我的教科书,似乎无法找到任何东西。还做了谷歌搜索,事实上,我实际上并不确定我在寻找什么。
答案 0 :(得分:4)
因为它使用__repr__
...
将此添加到您的Card类
def __repr__(self):
return str(self)
应解决问题
答案 1 :(得分:3)
这是你的问题:
# only used when printing change to __repr__
# to override the default object representation
def __repr__(self):
card = '[SUIT: %s, RANK: %s]' % (self.suit, self.rank)
return card
答案 2 :(得分:1)
卡片中需要__repr__
。例如:
def __repr__(self):
return self.__str__()