使用__str__打印对象的数组元素

时间:2014-10-29 19:14:36

标签: python

我正在Coursera做一个迷你项目。 (Card是另一个已在其他地方宣布的类。)

class Deck:    
    def __init__(self):
        self.deck = []
        for i in SUITS:
            for j in RANKS:
                self.deck.append(Card(str(i), str(j)))
    def deal_card(self):
        self.temp = random.randrange(0,52)        
        return(self.deck[self.temp])

    def __str__(self):
        #TODO

main()
test_deck = Deck()
c1 = test_deck.deal_card()
print test_deck

我理解列表self.deck包含一个Card对象列表,任何人都可以告诉我如何在self.deck中打印__str__(此对象所指的)的值方法

3 个答案:

答案 0 :(得分:3)

只需将其转换为字符串。

return str(self.deck)

答案 1 :(得分:0)

你也可以这样做:

def __str__(self):
  return ','.join(str(x) for x in self.deck)

之后,套牌的每个Card实例都必须覆盖自己的str方法,以便格式化。

答案 2 :(得分:0)

  

Python Docs应告诉您如何使用__str__

基本上当你这样做时:

print something

Python调用__str__的{​​{1}}方法并将其写入输出。

根据我的猜测,你可能想要打印这个物体是甲板的事实。所以这样的事情可能就是你想要的:

something

由于你正在学习Python,我有很多建议:

  1. 正如@abarnert所说,当你在Python 2中做class Deck: # ... def __str__(self): return "Deck()" 时,它是一个旧式的类。 (更多here
  2. 虽然没有必要,但在每个功能之前都应该有一个空行。
  3. 避免使用单字符变量名称。 (例如class ABC:i
  4. 所以,你的代码(应该)看起来像:

    j

    最后,您可能想要阅读this,这与我之前链接的页面相同,是两次。