Печать случайного экземпляра списка экземпляров классов, но получение Python3 RecursionError - PullRequest
0 голосов
/ 19 декабря 2018
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

Я очень новичок с экземплярами классов.Я оглянулся и не смог найти ответы, которые сработали.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 19 декабря 2018

Метод __str__ по умолчанию вызывает __repr__, и вы переопределили метод __repr__ для вызова метода __str__, вызвав функцию str для self, что приведет к бесконечной рекурсиикогда вы пытаетесь напечатать объект cards.

Вы должны заставить метод __str__ возвращать разумно читаемое представление объекта cards:

def __str__(self):
   return self.val + self.suit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...