Python返回十六进制地址而不是对象

时间:2015-03-06 00:59:09

标签: python

我在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>,....]

我看过我的教科书,似乎无法找到任何东西。还做了谷歌搜索,事实上,我实际上并不确定我在寻找什么。

3 个答案:

答案 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__()