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
的情况下,这肯定是最好的答案