Python返回十六进制地址而不是对象
我在开派对。这是我的密码Python返回十六进制地址而不是对象,python,Python,我在开派对。这是我的密码 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]' %
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>,....]
[,…]
我看了一下课本,似乎什么也没找到。我还做了谷歌搜索,事实上,我不确定我在找什么。因为它使用的是
\uuuuuu repr\uuuu
将此添加到您的卡类
def __repr__(self):
return str(self)
应该解决问题您需要卡片中的
\uuu repr\uuu
。例如:
def __repr__(self):
return self.__str__()
这是你的问题:
# 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
呸,你应该把它留下。。。我的使用str,我喜欢给他看另一个例子way@JoranBeasley这还是另一种方式-调用
\uuuu str\uuuu
就好像这是一种正常的方法:-)(是的,在你编辑之前我投了你一票,但仍然值得投一票,因为我们几乎是同时发布的(我想我赢了你一秒,反之亦然))str
函数调用参数的方法。这只是一种偏好。因为列表的\uuu str\uuu
方法打印其每个项目的repr
,不。一个列表,但不是那个列表。由于str(x)
默认为x.\uuuu repr\uuuuu
在没有\uuu str\uuuuu
的情况下,这肯定是最好的答案