python - 打印类实例列表的随机实例但得到 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__
默认调用 ,并且您通过调用on 函数覆盖了该__repr__
方法以调用该__str__
方法,从而在您尝试打印对象时导致无限递归。str
self
cards
您应该使该__str__
方法返回对象的合理可读表示cards
:
def __str__(self):
return self.val + self.suit
推荐阅读
- c - 按下 F10 或热键时启动 exe 所需的 C 代码
- linear-algebra - 关于奇异值分解中行空间中的标准正交基 v 的混淆?
- laravel - 为什么 Nuxtjs Axios 代理无法在服务器上运行?
- c++ - 用于接收/发送的 Libcurl 和用户定义函数
- html - 模态对话框未显示 - PUG
- unity3d - Unity C# 类新方法给出错误“类”不包含“名称”的定义
- linux - 如何从我的应用程序中提升 Raspberry Pi 上的“无线和有线网络设置”面板?
- c++ - 在派生对象的 get 方法上使用基础对象的 set 方法
- perl - 运行子程序 n 次
- yii2 - 在日志文件中获取 HttpException:400