簡體   English   中英

打印類實例列表的隨機實例,但得到RecursionError python3

[英]Printing a random instance of a list of class instances but getting a RecursionError python3

import random

class cards():

    def __init__(self,val,suit):
        self.val = val
        self.suit = suit

    def __repr__(self):
       return str(self)

deck = []
card_val = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
card_suit = ['♦','♥','♠','♣']

for x in card_val:
    for y in card_suit:
        card = cards(x,y)
        deck.append(card)

print(random.choice(deck))

嘗試打印時,出現以下錯誤:

RecursionError: maximum recursion depth exceeded while calling a Python object

我對類實例很陌生。 我環顧四周,找不到有效的答案。 任何幫助,將不勝感激。

__str__方法默認情況下會調用__repr__ ,而您通過調用self上的str函數來覆蓋__repr__方法來調用__str__方法,則在嘗試打印cards對象時會導致無限遞歸。

您應該使__str__方法返回cards對象的合理可讀的表示形式:

def __str__(self):
   return self.val + self.suit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM