You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行Cards类代码报__str__方法TypeError是何原因

报错根因

你遇到的TypeError: __str__() takes 0 positional arguments but 1 was given错误,核心原因是Python类的实例方法存在固定传参规则:通过实例调用方法时,Python会自动将实例本身作为第一个位置参数传入方法,对应方法定义时的第一个形参通常命名为self。你定义的__str__方法没有声明这个形参,调用时自动传入的实例参数无处接收,就触发了参数数量不匹配的报错。

除此之外你的代码还有两处会导致运行失败/输出错误的问题:

  • 实例化Cards类时,传入的第二个字符串"Diamond缺少闭合的双引号,会触发语法错误
  • __init__方法定义的参数顺序是suit(花色)在前、rank(点数)在后,你传入参数时顺序写反了,就算不报错输出内容也会颠倒为Diamond of Queen,不符合预期
修复方法
  • 给__str__方法的定义加上self作为第一个形参
  • 补全字符串缺失的闭合双引号
  • 调整实例化时的传参顺序,先传花色、再传点数
修复后可运行代码
class Cards():
    def __init__(self,suit, rank):
        self.suit = suit
        self.rank = rank
    
    def __str__(self):
        return self.rank + " of " + self.suit

card = Cards("Diamond", "Queen")
print(card)
运行输出
Queen of Diamond

内容的提问来源于stack exchange,提问作者Will108

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:27:35